web服务器中shell启动java调ibtas取数据与online的区别
来源:互联网 发布:天地传说之宝莲灯源码 编辑:程序博客网 时间:2024/05/22 06:34
最近在做一个项目中,需要将原来在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方式。
<transactionManager type="JDBC" ><dataSource type="JNDI"><property name="DataSource" value="java:comp/env/jdbc/jpetstore"/></dataSource></transactionManager>
但是我们从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"/> </plug-in >如果我们是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);
后续会附上代码。
- web服务器中shell启动java调ibtas取数据与online的区别
- Web服务器与应用服务器的区别
- 应用服务器与web服务器的区别
- web服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别 .
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- Web 服务器与应用服务器的区别
- WEB服务器与应用服务器的区别
- gstreamer GST_BOILERPLATE_FULL 分析
- 利用Application进行数据传递以及要注意的问题(内存泄漏)
- WM_MOUSELEAVE和WM_MOUSEHOVER使用
- 中国人唯一不认可的成功——就是家庭的和睦,人生的平淡(做为程序员的我们又追求什么样的人生呢?)值得思考???
- Linux设备管理
- web服务器中shell启动java调ibtas取数据与online的区别
- 用php自定义 nagios监控插件
- [IT 男人帮 -10/28] 尘埃落定,索尼爱立信将成为索尼的全资子公司
- 通过js获取 服务器 ip 服务器端口 服务器地址
- 如何提高数据库性能
- 使用标准C++的类型转换符
- C/C++内存与运行时深入研究
- 用栈来实现迷宫(给你一点点启示)
- 傻宝宝论坛:头文件和cpp文件