IB怎么运行java_web服务器中shell启动java调ibtas取数据与online的区别

最近在做一个项目中,需要将原来在DB服务器中的处理移植到online上来。

这样就导致存在一个问题:要将在DB服务器中的调用数据库方式转换成Web服务器中的调用数据库方式。

整理下思路,我想到以下的实施方法:

1,首先在Web服务器中,新写个shell程序,在shell中调用java class。

2,在java class中调用serviceFactory生产的service class,得到DB用的service类

3,得到service类就可以操作数据库,完成数据的查询更新等处理了。

下面具体来针对以上的步骤中要注意的事项说明一下:

步骤1:

.shell文件中要用setenv 命令把后面要调用的java class要使用的java包,以及class全部声明下。

.要注意如果自己要把java文件打成jar包的话,要从src目录下开始做,譬如你的代码结构是

src

|_com

|_|_cn

|      |_daig

|_jp

那要在src目录上层,将scr目录下的代码全部打包。打包命令:jar cvf src.jar src(当前目录下)

顺便说下解压命令:jar xvf scr.jar

.最重要的JAVA_HOME 要setenv,然后使用${JAVA_HOME}/bin/java -Xms100M -Xmx1000M co.cn.daig.Test(全路径class类)

步骤二:

.我们在web服务器中使用的sqlmap.xml中使用的是jndi方式。

但是我们从shell启动java的时候就获取不了这个jndi了,我们只能使用其他的方式,譬如SIMPLE方式。否则可能会报出如下exception:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an

< transactionManager type ="JDBC" >

< dataSource type ="SIMPLE" >

< property name ="JDBC.Driver" value ="oracle.jdbc.driver.OracleDriver" />

< property name ="JDBC.ConnectionURL" value ="jdbc:oracle:thin@192.168.1.1:1500:testDB" />

< property name ="JDBC.Username" value ="user" />

< property name ="JDBC.Password" value ="mypass" />

< property name ="Pool.MaximumActiveConnections" value ="10" />

< property name ="Pool.MaximumIdleConnections" value ="5" />

< property name ="Pool.MaximumCheckoutTime" value ="120000" />

< property name ="Pool.TimeToWait" value ="500" />

< property name ="Pool.PingQuery" value ="select 1 from ACCOUNT" />

< property name ="Pool.PingEnabled" value ="false" />

< property name ="Pool.PingConnectionsOlderThan" value ="1" />

< property name ="Pool.PingConnectionsNotUsedFor" value ="1" />

dataSource >

transactionManager >

还有在WEB服务器中我们online方式的时候,如果我们使用sqlMapPlugIn的方式来做DB access的初期化的话,

web服务启动的时候会加载struts-config.xml中的plug-in配置,本项目就是这种方式。

< plug-in

className = "cn.co.ibm.x1.ko.common.plugin.SqlMapPlugIn " >

< set-property property = "daoClassName"

value = "cn.co.ibm.x1.ko.common.dao.sqlmap.oracle.OracleDaoImpl"/>

如果我们是shell其中java的话,这个plugin配置肯定是读取不到了,当然也不会自动为我们加载了。

那么就需要我们在生产serviceFactory的时候,手动给sqlMapPlugIn类设定了

SqlMapPlugIn smp = new SqlMapPlugIn();

smp.setDaoClassName("cn.co.ibm.x1.ko.common.dao.sqlmap.oracle.OracleDaoImpl");

smp.init(null,null); 后续会附上代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值