您的位置:首页 > 其它

包含cxf的应用程序部署在websphere8.5上

2015-07-22 11:22 267 查看
websphere 官方文档 http://www-01.ibm.com/support/knowledgecenter/SS7JFU_8.5.5/com.ibm.websphere.express.doc/ae/twbs_thirdparty.html?cp=SS7JFU_8.5.5%2F1-13-1-12-1 我的cxf应用程序使用的是cxf2.5.2,将 放在四个jar包放在ibm lib包下的endorsed_apis中

javax.annotation-api-1.2.jar
jaxb-api-2.1.jar
jaxb-impl-2.1.13.jar
jaxws-api-2.1-1.jar
这里说个最佳实践,因为jdk不管是sun的还是ibm的都会有冲突跟cxf,你可以先用个1.5的环境让你的cxf程序能够运行起来,这样所有的jar包依赖都在自己的lib中了

以下是我使用的几个jar包冲突的放在共享库中,模块引用,类加载器引用了(有些可能不需要引用,我就没一一再试了)
<classPath>D:\IBM\WebSphere\AppServer\lib\oaJars\httpclient-4.3.1.jar</classPath>
<classPath>D:\IBM\WebSphere\AppServer\lib\oaJars\httpcore-4.3.jar</classPath>
<classPath>D:\IBM\WebSphere\AppServer\lib\oaJars\httpmime-4.3.1.jar</classPath>
<classPath>D:\IBM\WebSphere\AppServer\lib\oaJars\xmlschema-core-2.1.0.jar</classPath>
<classPath>D:\IBM\WebSphere\AppServer\lib\oaJars\javax.annotation-api-1.2.jar</classPath>
<classPath>D:\IBM\WebSphere\AppServer\lib\oaJars\commons-logging-1.1.1.jar</classPath>

部分问题处理:

如果打开was启动不了(如果将websphere作为系统程序的话执行以下操作,如果不是忽略1)
1、WSService
2、和IBMWASjsglcz两个进程
3、还有一个java进程

打不开之前 先将java进程树关闭,确保WSService是运行的的,然后手动执行命令,将IBM。。。启动

安装was,之后将

应用程序服务器 > server1 > 进程定义 > Java 虚拟机 的参数配置大一点 再配置jndi数据源

//找到解压后的
D:\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\jsgls-czoaNode01Cell\gloa_war.ear\gloa.war
查看类加载器结构
应用程序服务器 > server1 > 已安装的应用程序 > gloa_war > 管理模块 > gloa.war > 类装入器查看器
删除jar包中的jsp-api 和servlet-api,jstl-三个
Caused by:
java.lang.NoClassDefFoundError: com.sun.crypto.provider.SunJCE
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:72)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:134)

原因:   IBM有另外的 IBMJCE 实现类 。

解决方法: 在 WEB-INF/lib 加入 jce.jar和 sunjce_provider.jar
-Dcom.ibm.websphere.webservices.DisableIBMJAXWSEngine=true
 http://blog.csdn.net/a477997/article/details/38173863?utm_source=tuicool 
/**/ http://stackoverflow.com/questions/25432259/failed-to-start-my-application-in-websphere-8-5-5 mine 20:51:15 http://www.webspherechina.net/club/thread-83873-1-1.html mine 21:08:09

If you are running this project from IDE, Check your server configurations.
上述jar包从 war包中删除试试
mine 21:08:17 http://stackoverflow.com/questions/16577535/build-path-is-incomplete-cannot-find-class-file-for-javax-servlet-servletcontex mine 22:09:02 http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1111_zhangt_opensource/1111_zhangt_opensource.html 2015-07-02
mine 21:28:20 http://wenku.baidu.com/link?url=0Uz8Y9hwLhomWftTrWrln-S2F0qkUi8L6OgS_xR8PpeM-8RcTVQyo8n6nc1wWZZwnxykB2v-xh6joPezuMaSxUyCHlxilsl75dqlpMSS5kK mine 22:17:39
若想加载自己的jar,而不是websphere相应的jar。需:
1.在应用服务器菜单中,应用程序类载入器策略设为“多个”,将应用程序类装入方式设为“最后装入父类”;
2.在应用程序菜单中,选择相应war包,设置类载入器方式为“parent_last”,设置WAR 类载入器策略为“模块”。
3.重启websphere
[@more@]

手动修改server的jvm配置(http://down.51cto.com/data/515642)
D:\IBM\WebSphere\AppServer\profiles\AppSrv01\config\cells\jsgls-czoaNode01Cell\nodes\jsgls-czoaNode01\servers\server1\server.xml

java.lang.verifyerrorjvmvrfy013加载约束违反 应该是你的程序的lib中有jar包,was类路径中也有,删除自己程序中的,加入共享库中 http://blog.csdn.net/siwangying/article/details/42081823 如:找到报错的地方 (Ljavax/xml/stream/XMLEventReader;)Ljava/lang/Object;, pc=0 找到该类所在的jar

为工作流修改sun的jce配置,was默认的是ibm jce http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0306_yu/yu.html http://blog.sina.com.cn/s/blog_4a7318860100bi2j.html
修改安全认证配置,增加jar包:
#  cd opt/IBM/WebSphere/AppServer/java/jre/lib/security/
编辑文件java.security
# vi java.security
在security.provider.9后面加一条
security.provider.10=com.sun.crypto.provider.SunJCE

将sunjce_provider.jar和jce.jar复制到opt/IBM/WebSphere/AppServer/java/jre/lib/ext下
# cp /usr/local/sunjce_provider.jar opt/IBM/WebSphere/AppServer/java/jre/lib/ex
# cp /usr/local/jce.jar opt/IBM/WebSphere/AppServer/java/jre/lib/ex

Websphere(WAS)安装war包后项目无法启动或删除,同时Websphere(WAS)无法关闭或启动的解决办法 http://blog.csdn.net/dreamcode/article/details/38367757 1、杀掉WAS进程,强制关闭WAS
执行命令:ps -ef|grep java
杀掉进程:kill -9 16974064

2、手动删除已安装war包及相关配置文件
(1)    删除war包:rm –rf /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/localhostNode01Cell/xxx_war.ear
(2)    删除对应的配置文件:rm –rf /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/localhostNode01Cell/applications/xxx_war.ear

3、 启动WAS上某个Profile,进入目录如
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin
执行启动命令:sh ./startServer.sh server1

遇到启动不了又删不掉项目的话
就serverindex.xml 找到这个文件,看清楚是在node下的,将gloa_war 删除掉,下面的一行,启动后控制台卸载,ok
<extendedApplicationDataElements xmi:id="ExtendedApplicationData_1436502961095" applicationName="gloa_war" standaloneModuleName="gloa.war"/>

工作流crm.xml要加入
<configValue key="AppServer" desc="配置应用服务器">websphere</configValue>

乱码问题
1.修改服务器编码类型:
(1)前台修改方法:
服务器-》服务器类型-》WebSphere Application Server-》 SuiteServer -》 进程定义 -》 Java 虚拟机
通用 JVM 参数-》-Dfile.encoding=UTF-8 -Ddefault.client.encoding=UTF-8
(2)后台修改方法:
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/10Cell01/nodes/10Node01/servers/SuiteServer
修改其中的server.xml中的
参数genericJvmArguments="-Dfile.encoding=UTF-8 -Ddefault.client.encoding=UTF-8"
 http://cxf.apache.org/docs/application-server-specific-configuration-guide.html[/code] 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: