liunx下websphere应用部署遇到问题

在项目中将开发的程序上测试环境发现一系列问题,记录下以便自己回头查看

新建的oracle数据库实例需要设置变量ORACLE_SID=oracle实例名然后启动

在liunx下wepsphere部署应用发现无法用jdbc连接数据库,而在windows下的websphere却可以。

错误为:

Error 500: class loading constraint violated (class: oracle/jdbc/driver/OracleStatement method: parseExecuteFetchWithTimeout(Loracle/jdbc/dbaccess/DBStatement;B[BLoracle/jdbc/dbaccess/DBDataSet;ILoracle/jdbc/dbaccess/DBDataSet;I)I) at pc: 0

后来发现是oracle的驱动包原因,把classes12.jar换成ojdbc14.jar就可以了

oracle对不同jdk版本的oracle驱动包有所区别。

另外在该环境下BufferedReader包装FileReader后的readLine报sun.io.MalformedInputException,需要处理文件的编码或者设置websphere的编码为统一的编码方式。

可以采用控制台设置虚拟机参数或者 某xml设置 -Dfile.encoding=GBK 或启动设置./startServer.sh server1 -Dfile.encoding=GBK

如果项目中使用加解密相关的类似

java.security.Security.addProvider(new com.sun.crypto.provider.SunJCE());

时需要注意,该api和java运行时环境相关,例如在websphere中使用的是ibmJCE,因此导致类加载出错,

该行代码指定使用的提供程序,非必须,如果一定要使用sun的jce,可以在websphere上导入配置使用sun的jce ,

也可以将Websphere中的JCE包导到工程中并在工程中改用ibm的jce,如

Security.addProvider(new com.ibm.crypto.provider.IBMJCE());

为了确保您的 JSP 被正确编译,请在打包时的 JSP 属性里添加一个属性:jdkSourceLevel,值为:15,这是推荐的方法,如果您不能重新打包后重新发布应用,请按照下面的步骤修改相关文件:
找到下面的两个文件:
<WAS-HOME>/profiles/AppSrv01/config/cells/<cellname>/applications/<appname>/deployments/<appname.war>/WEB-INF/ibm-web-ext.xmi
<WAS-HOME>/profiles/AppSrv01/installedApps/<nodename>/<appname>/<appname.war>/WEB-INF/ibm-web-ext.xmi

在最后面的 </webappext:WebAppExtension> 前添加下面一行:

Xml代码
<jspAttributes xmi:id="JSPAttribute_113" name="jdkSourceLevel" value="15"/>


保存后重新启动应用即可,也请同时删除 jsp 已经编译过的 class 文件:

<WAS-HOME>/profiles/AppSrv01/temp/<nodename>/<appname>/<appname.war>/*.class

另外web服务器上起的线程和任务不能随web项目停止而停止,需要注意使用servlet API的Listener来成关闭。

weblogic应用服务器重启项目静态的变量并不销毁,仍保存原值,守护线程也不会随项目关闭而结束,项目重启后任可获得原值,也可以利用此性质停掉重启前次启动的线程。

websphere重启项目后原静态的变量已销毁,守护线程不关闭,项目重启后无法获得原值。

只能通过停止服务停止线程。

启动关闭webpsphere使用startServer.sh server1 和stopServer.sh server1

猜你喜欢

转载自seahb.iteye.com/blog/1287783
今日推荐