您的位置:首页 > 其它

在weblogic中设置启动时自动定时执行的任务(转)

2007-06-16 16:10 645 查看
一.Timer与TimerTask组合起来用于实现定时执行任务的功能
1.TimerTask:定义要执行的任务,你需要自己定义一个继承自该类的子类,并把要执行的任务实现在run接口中,如下所示:
import java.util.*;

public class MyTask extends TimerTask
{
 public void run()
 {
//你的任务
 System.out.println( "Running the task" );
 }
}.
实际上TimerTask实现了java.lang.Runnable 接口
2.Timer:通过schedule方法定时调用TimerTask设定的任务
 包含方法:
 (1).Timer()
 以常规方式运行task
 (2).Timer(boolean)
 true时表示使用后台线程。只要剩下的程序继续运行,后台线程就会执行。
 (3).public void cancel()
 终止Timer的功能执行,但不会对正在执行的任务有影响。当执行cancel方法后将不能再用其分配任务。
 (4).public void schedule(TimerTask task,Date time)
 task被安排在time指定的时间执行,如果时间为过去时则任务立刻执行。
 (5).public void schedule(TimerTask task, Date firstTime, long period)
 task被安排在time指定的时间执行,执行后将每隔period(毫秒)反复执行。
 (6).public void schedule(TimerTask task, long delay)
 task被安排在delay(毫秒)指定的时间后执行。
 (7).public void schedule(TimerTask task,long delay, long period)
 task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。 (8).public void scheduleAtFixedRate(TimerTask task,Date firstTime, long period)
 task被安排在firstTime指定的时间执行。执行后将每隔period(毫秒)反复执行。根据该任务第一次执行的时间来指定反复执行时延长的时间段。如果一个任务被延时了,被安排在后面执行的任务就被相应的缩短等待时间以“接上”被延时的任务
 (9).public void scheduleAtFixedRate(TimerTask task,long delay,long period)
 task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。同上。
注意每个 Timer 对象在同一时间只能执行一个任务
以下是一个例子:

import java.util.*;
import java.io.*;


public class doTask extends TimerTask {
 String index;
 Timer myTimer = new Timer();
 public doTask(String index) {
 this.index = index;
 }

 public void run() {
 System.out.println(index);
 }

 public static void main(String args[]) {
 doTask myTask1 = new doTask("First task");
 myTask1.start(0,3);
 doTask myTask2 = new doTask("Second task");
 myTask2.start(0,1);

 try{
 Thread.sleep(6000);
 }
 catch(InterruptedException e){
 }

 myTask1.end();
 myTask2.end();//程序结束时用cancel()结束Timer

 }

 public void start(int delay, int internal) {
 myTimer.schedule(this, delay * 1000, internal * 1000); //利用Timer.schedule方法
 }
 public void end(){
 myTimer.cancel();
 }
}

输出:
First task
Second task
Second task
Second task
First task
Second task
Second task
Second task


二.要使该class能在weblogic启动后自动执行,需要一个实现T3StartupDef接口的class
import java.util.Hashtable;
import weblogic.common.T3StartupDef;
import weblogic.common.T3ServicesDef;
public class startuptest implements T3StartupDef {

public void setServices(T3ServicesDef services) {}

public String startup(String name, Hashtable args) throws Exception {
 doTask.main();

return "Startup completed successfully";
}
}
在weblogic中添加该任务以便在weblogic启动后自动执行,启动weblogic,在Console 左边的mydomain—> Deployment—>Startup & Shutdown里点击“Configure a new Startup Class...”
Name随便填,ClassName填PackageName.ClassName(该class必须实现startup接口)
Deployment Order:指定Startup class的启动顺序,当存在多个Startup class时Order小的先执行
Create就可以了,如果运行时提示class找不到,那需要在commEnv.cmd文件的WEBLOGIC_CLASSPATH中追加该class的路径

DB2存储过程编译环境设置

DB2自带Stored Procedure Builder编译工具可以进行存储过程的开发,但由于DB2没有自带编译工具生成时需要使用另外的编译器,一般常用的是VC编译器,配置步骤如下:
1. 在DB2服务端安装vc6
2. 运行一下Stored Procedure Builder,你会发现在C:Program FilesSQLLIBfunction下新生成了一个目录:routine,修改下面的文件sr_cpath.bat,在里面增加以下内容:
set VCV6_DRIVE=C:Program FilesMicrosoft Visual Studio
set include=%include%;%VCV6_DRIVE%VC98atlinclude;%VCV6_DRIVE%VC98mfcinclude;%VCV6_DRIVE%VC98include
set lib=%lib%;%VCV6_DRIVE%VC98mfclib;%VCV6_DRIVE%VC98lib
set path=%path%;%VCV6_DRIVE%CommonToolsWinNT;%VCV6_DRIVE%CommonMSDev98Bin;%VCV6_DRIVE%CommonTools;%VCV6_DRIVE%VC98bin;%VCV6_DRIVE%VC98mfclib;%VCV6_DRIVE%VC98lib
实际就是将原来的第一段注释解开,注意要根据vc实际的安装路径修改VCV6_DRIVE
3. 在DB2的命令窗口中运行以下命令:
db2set DB2_SQLROUTINE_COMPILE_COMMAND="cl -Od -W2 /TC -D_X86_=1 -Ic:progra~1sqllibinclude SQLROUTINE_FILENAME.c /link -dll -def:SQLROUTINE_FILENAME.def /out:SQLROUTINE_FILENAME.dll c:progra~1sqlliblibdb2api.lib"

db2set DB2_SQLROUTINE_COMPILER_PATH="c:progra~1sqllibfunctionroutinesr_cpath.bat"
同样要注意按照DB2的安装路径修改
4. 重新启动DB2
就可以了。在客户端不用做什么设置

# posted by HEXIN_2000 @ 2005-07-15 17:46 评论(0)
WebService SOAP的监听和encoding修改
2005-7-6 星期三(Wednesday) 小雨


1。在 Web Service SOAP 发送消息中附加 XML(javax.xml.transform.Source 对象)时,可以在 XML 头中指定任何编码。

方式有三种

a)在客户端 HTTP 请求中指定“Accept-Charset”参数。

b)在 web-service.xml 部署描述符中指定字符集特性



 ...


c)在startWebLogic.cmd中加入-Dweblogic.webservice.i18n.charset=GB2312注意有两处
但是,收到的XML消息头编码将为 UTF-8,不能修改。


2。在webservice中监听客户端传送的soap文件内容

使用MssoapT用于监听SOAP请求

使用方法如下:

1.选择”File”->formatted trace,

2.其中local port指本地的接收端口,我们现在设为8080:

Destination(第一个)指要监听的主机IP,我们现在设为192.1.7.111:

Destination(第二个)指要监听的主机端口,我们现在设为7001:

上述设置的含义如下::

所有从本机8080端口发出的消息,都将被发送到192.1.7.111:7001下:

我主机ip为192.1.7.102:

所以当我在ie中运行:

http://192.1.7.102:8080/safe/SummaryListWebService.jws?.EXPLORE=.TEST:

等价于:

http://192.1.7.111:7001/safe/SummaryListWebService.jws?.EXPLORE=.TEST:

注意: 在ie中运行时必须为本地机的IP,不能为localhost或者127.0.0.1


WebLogic下db2连接池的配置


1. 创建一个WebLogic的configuration

1)启动Configuration Wizard,选择”creat a new WebLogic configuration”点击下一步

2)选择第3项进入下一页面”choose Express or Custom Configuration”,直接继续

3)输入登录用户名和密码,next

4)一路继续下去直到结束.

5)按”done”第一步就算完成了.


2. 在建好的configuration上加装”work shop”

1)启动Configuration Wizard,选择下面一项”Extend an existing WebLogic configuration”下一步

2)选定刚才新建的domains-“mydomain”下一步

3)选中WebLogic Workshop Extension,然后继续继续,直到结束,就完成了configuration的生成


你可以试一下新建的configuration
运行C:beauser_projectsdomainsmydomainstartWebLogic.cmd,看看后台有无错误,如果没有任何错误,那是

非常正常的现象.

启动http://127.0.0.1:7001/console输入刚才的用户名和密码,你应该看到控制台画面

把刚才的服务关了吧,我们下面配置Workshop

3. 建立一个Workshop应用

1)打开WebLogic Workshop 8.1,选择fiel->new->application出现以下画面选择”empty application”,路径和

name我这里设置为路径:d:test,name:test.server要选上面新建的 ,我这里是”

C:beauser_projectsdomainsmydomain”然后选择create

2)Create后application部分是下面这个样子:

Test

->modules

->libraries

->security roles

3)在你的application路径下建立文件夹” test”,上source safe,Get所有文件到刚才新建的test目录下,打开

WebLogic Workshop 8.1,Import 这个项目:选择”web service project”;路径为d:testtest;Name为test,点

击Import,这里要注意,引入的project必须在建立的application的下一级目录上,否则会出错

4)Build一下该项目,把有问题的文件都删了,
Build成功后选择一个jws文件运行一下

如果出现”workshop test browser”画面,恭喜你web service已经建好,可以进行下一步了

4. 建立JDBC

1. 将C:Program FilesSQLLIBjava db2java.zip改名为.jar文件,COPY到C:beaweblogic81

serverlib下,这一步是将db2的jdbc驱动放在weblogic下

2. 修改C:beaweblogic81commonbincommEnv.cmd在
set WEBLOGIC_CLASSPATH=后加入%WL_HOME%serverlibdb2java.jar;

3. 修改C:beaweblogic81serverbinstartWLS.cmd在
 set CLASSPATH=后加入%WL_HOME%serverlibdb2java.jar;

以上两步是设置jdbc驱动的路径,以让weblogic可以识别

4. 启动C:beauser_projectsdomainsmydomainstartWebLogic.cmd

5. 登录http://127.0.0.1:7001/console进去

6. 新建一个connection pool

7. 按照画面填写,database type为db2;database driver为other,”continue”

8. NAME 随便起,我这里为testidbc connection pool

DriverClassname: COM.ibm.db2.jdbc.net.DB2Driver

URL: jdbc:db2://192.1.7.150/50000:SAFE

Database user name 为admin

PASSWORD:1234

9. 测试连接,成功后应该有connection successful的画面


不成功时,一般有以下几种原因

A) 找不到路径,可能是上面1,2,3部设置不对,weblogic找不到驱动

B) db2java.jar,应该是2。0的版本

C) 套接字错误,一般是db2的端口有问题,在DB2命令窗口下运行db2jstrt 50000命令就可以了

D) 服务器不响应,看看数据库实例是否启动

10. 点 create and deploy



5. 建立DATASOURCE

填写name和jndi name 点“继续”,pool name要选择上面新建的那个,继续,再继续。就配置完成了。

这里要注意: Honor Global Transactions选项必须去掉,该选项的作用是将

transaction的类型设为distributed transaction,如果选中该选项,显示的调用commit时将会出错,这里多说一句

,建连接池时带XA的驱动最好都不要用



Transaction Type Autocommit Default Change Default? Result




Local transaction true yes 将其设为false可以提高性能



Distributed transaction false no 不能修改缺省值,如果将其设

为true,将抛出SQLException


注:local transaction一般指的是单数据源参与的事务. distributed transaction指的多数据源(db)参与的事务


6. 配置其它properties文件(非必须)

1. DBAccess和AppConfig

修改 C:beauser_projectsdomainsmydomainstartWebLogic.cmd这个文件,
在if "%WLS_REDIRECT_LOG%"=="" (前添加如下2句语句:

set DBACCESS=D:safesafeWEB-INFconfigureDBAccessConfig.properties

set AppConfig=D:safesafeWEB-INFconfigureConfig.properties


查找字符串 -Dweblogic.Name=%SERVER_NAME%(注意:有两处) ,在其前面添加如下内容,然后重新启动

workshop

-DDBCONFIGFILE=%DBACCESS% -DAppConfigFile=%AppConfig%
2. 修改Config.properties将路径都指向你当前的路径



3. 修改DBAccessConfig.properties


#数据库系统类型

DBType=db2

#数据库连接用户

DBUserName=ADMIN

#数据库连接用户密码

DBPassword=1234

#数据库连接池中连接使用比例(如一定时间内小于此值,连接数量将会被削减。)

InUsePercentage=0.5

#连接池实现方式(当前有两种:implementation,proxy)

#PoolImpl=implementation


#使用weblogic DataSource 配置

PoolImpl=proxy

datasource_jndiname=TESTJNDI

context_url=t3://localhost:7001

initial_context=weblogic.jndi.WLInitialContextFactory


oracle.path=./DBAccess/sql/oracle

#oracle.driver=oracle.jdbc.driver.OracleDriver

#oracle.url=jdbc:oracle:oci8:@ora31

oracle.driver=oracle.jdbc.driver.OracleDriver

oracle.url=jdbc:oracle:thin:@192.168.100.31:1521:PRO

oracle.sqlCacheMode=10002

oracle.poolinit=4

oracle.poolmax=10

oracle.poolmin=4

oracle.poolincr=1

oracle.poolidletime=10


#SQL Command存放路径(可为相对工作路径或绝对路径。)

mssql.path=C:/bea/weblogic81/samples/workshop/SamplesApp/safe/WEB-INF/configure/sql/sqlserver

#数据库系统对应JDBC驱动

mssql.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver

#JDBC URL

mssql.url=jdbc:microsoft:sqlserver://192.1.7.150:1433;DatabaseName=SAFEDB;SelectMethod=cursor

#SQL Command缓存模式(可取值10001或10002,分别对应初始化时缓存所有SQL Command或执行时缓存。)

mssql.sqlCacheMode=10002

#连接池初始大小

mssql.poolinit=4

#连接池最大连接数

mssql.poolmax=10

#连接池最小连接数

mssql.poolmin=4

#连接池连接递增数量级

mssql.poolincr=1

#连接池休眠时间(秒)

mssql.poolidletime=60

mssql.quick.url=jdbc:microsoft:sqlserver://192.1.7.150:1433;DatabaseName=SAFE;encoding=GBK

mssql.quick.poolinit=1

mssql.quick.poolmax=4

mssql.quick.poolmin=1

mssql.quick.poolincr=1


#SQL Command存放路径(可为相对工作路径或绝对路径。)

db2.path=D:/safe/safe/WEB-INF/configure/sql/db2

#数据库系统对应JDBC驱动

db2.driver=COM.ibm.db2.jdbc.net.DB2Driver

#JDBC URL

db2.url=jdbc:db2://192.1.7.150/50000:SAFE

#SQL Command缓存模式(可取值10001或10002,分别对应初始化时缓存所有SQL Command或执行时缓存。)

db2.sqlCacheMode=10002

#连接池初始大小

db2.poolinit=4

#连接池最大连接数

db2.poolmax=10

#连接池最小连接数

db2.poolmin=4

#连接池连接递增数量级

db2.poolincr=1

#连接池休眠时间(秒)

db2.poolidletime=60

db2.quick.url=jdbc:db2://192.1.7.150/50000:SAFE

db2.quick.poolinit=1

db2.quick.poolm
# posted by hexin_2000 @ 2005-07-06 16:03 评论(0)
分页查询的数据库处理
2005-6-13 星期一(Monday) 多云

1.在DB2和ORACLE中可以使用分析函数row_number() over ( partition by col1 order by col2 )
例:
比如想取出100-150条记录,按照tname排序

select tname,tabtype from (
 select tname,tabtype,row_number() over ( order by tname ) rn from tab
)
where rn between 100 and 150;
2.也可以在ORACLE中直接使用rownum 虚列
select tname,tabtype from (
 select tname,tabtype,rownum rn from tab where rownum <= 150
)
where rn >= 100;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: