支持 MQ 7 功能需要遵循 6 个步骤
我在 WAS6 中部署 EAR 模块时遇到问题。
支持我的应用程序中的 MQ 7 功能。我按照以下步骤操作:
- 将类加载器策略设置为 PARENT_LAST。
- 将所有 MQ 7 相关的 jar 放在 EAR 的根目录中。
EAR 包含 Web 模块。当我尝试启动应用程序时,出现以下异常:
javax.servlet.jsp.JspException:无法从上下文获取定义工厂。 在 org.apache.struts.taglib.tiles.InsertTag.processDefinitionName(InsertTag.java:575) 在org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:474) 在 org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:436) 在 com.ibm._jsp._home._jspx_meth_tiles_insert_0(_home.java:106) 在 com.ibm._jsp._home._jspService(_home.java:81)
War 包含以下 jar。
xstream-1.3.1.jar、xercesImpl.jar、xalan.jar、struts.jar、standard.jar、commons-validator.jar、commons-net-1.4.0.jar、commons-fileupload.jar、commons-digester。 jar、commons-collections.jar、commons-beanutils.jar、resolver.jar、jstl.jar、jfreechart-1.0.2.jar、 jcommon-1.0.5.jar、jaxen-full.jar、jakarta-oro.jar。
EAR 包含以下 Jars, com.ibm.mqjms.jar、com.ibm.mq.jmqi.jar、com.ibm.mq.jar、com.ibm.mq.headers.jar、com.ibm.mq.commonservices.jar、log4j.jar、 dhbcore.jar。
我使用 log4j.jar 在 WAR 的清单文件中设置了类路径属性
请任何人建议我 Websphere 的类加载策略如何解决我出错的地方。
卡蒂克
I have problem with EAR module deployed in WAS6.
To support the MQ 7 features in my App. I follow the below steps:
- Put Class loader policy as PARENT_LAST.
- Placed all MQ 7 related jars in the root of EAR.
EAR contains Web module. When I try to start the application, I got following exception:
javax.servlet.jsp.JspException: Can't get definitions factory from context.
at org.apache.struts.taglib.tiles.InsertTag.processDefinitionName(InsertTag.java:575)
at org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:474)
at org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:436)
at com.ibm._jsp._home._jspx_meth_tiles_insert_0(_home.java:106)
at com.ibm._jsp._home._jspService(_home.java:81)
The War contains the following jars.
xstream-1.3.1.jar,xercesImpl.jar, xalan.jar,struts.jar, standard.jar,commons-validator.jar, commons-net-1.4.0.jar, commons-fileupload.jar, commons-digester.jar, commons-collections.jar, commons-beanutils.jar,resolver.jar,jstl.jar, jfreechart-1.0.2.jar, jcommon-1.0.5.jar, jaxen-full.jar, jakarta-oro.jar.
EAR contains the following Jars,
com.ibm.mqjms.jar, com.ibm.mq.jmqi.jar, com.ibm.mq.jar, com.ibm.mq.headers.jar, com.ibm.mq.commonservices.jar,log4j.jar,dhbcore.jar.
And I set the class-path attribute in my Manifest file of the WAR with log4j.jar
Please anyone suggest me how Websphere's classloading policy works for where I went wrong.
Karthik
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
前段时间我做了类似的事情。我想使用已在 WebSphere Application Server 中使用的特定版本的库。这就是为什么您必须将库放入 EAR 文件并将应用程序服务器设置为 PARENT_LAST 类加载器顺序的原因。
如果我错了,请纠正我,但您还必须在 WAR 文件的清单中指定自定义 MQ 客户端库。您只提到了Log4J。它应该看起来像这样:
无论如何,如果您登录到集成解决方案控制台(又名管理控制台),您可以随时检查应用程序的类路径中有哪些库,并且检查疑难解答部分。有一个类加载器查看器。只需在树中单击自己,然后检查提到的库路径以及您期望的库路径。
最后,正如 Dylan 在他的评论中提到的:WebSphere Application Server 版本 6.1 将于 2012 年 9 月 30 日停止支持。:)
Some time ago I did something similiar. I wanted to use a specific version of a library which was already used within the WebSphere Application Server. That is the reason why you have to put your libraries in the EAR file and set the application server to PARENT_LAST class loader order.
Correct me if I am wrong, but you also have to specify your custom MQ client libraries in Manifest of your WAR file. You only mentioned Log4J. It should look somehting like this:
Anyway, you can always check what libraries are in the Classpath of you application if you log into the Integrated Solutions Console (aka Admin Console) and check the Troubleshooting section. There is a classloader viewer. Just click yourself through the tree and check which library path are mentioned and which you would expect.
Finally, as Dylan already mentioned in his comment: WebSphere Application Server version 6.1 runs out of support September 30, 2012. :)