请帮助解决这个问题,我疯了......
我正在尝试使用Weblogic 10作为应用程序服务器和IIS作为Web服务器(公司约束),使用EJB 3和Struts 2来创建客户端 - 服务器Web应用程序。但是我遇到了无法解决的问题。
使用Struts 2.2我在启动服务器时获得以下堆栈跟踪:
<12-ott-2010 16.02.21 CEST> <Error> <HTTP> <BEA-101165> <Could not load user def
ined filter in web.xml: org.apache.struts2.dispatcher.FilterDispatcher.
java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inj
ect.ContainerImpl$MethodInjector
File: ContainerImpl.java
Method: inject
Line: 295 - com/opensymphony/xwork2/inject/ContainerImpl.java:295:-1
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:428)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.
java:190)
at weblogic.servlet.internal.FilterManager$FilterInitAction.run(FilterMa
nager.java:320)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
Truncated. see log file for complete stacktrace
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
[...]
java.lang.IllegalArgumentException: Javassist library is missing in classpath! P
lease add missed dependency!
at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:165)
[...]
但是,Javassist包在所有其他与Struts相关的库中的Web类路径(/ WEB-INF / lib direcotry)中清晰可见,我也可以浏览它的包和类。我也把它放在CLASSPATH库和Weblogic初始化参数中,但没有任何作用。我不知道该怎么想。这是一个Struts 2 / Weblogic集成错误吗?
甚至更奇怪的是,最初我设法使Struts 2工作。然后由于某种原因(我真的不知道为什么)它停止了,我无法摆脱那个错误。
感谢您的帮助。
答案 0 :(得分:0)
当所有希望都失去时,解决方案通常会出现。显然我所要做的就是将所有Struts库(包括Javassist)移动到父EAR项目的/ lib目录中。这对我来说听起来很奇怪,但它有效并且我坚持使用解决方案。
我对Weblogic和企业应用程序一般不太熟悉,所以很容易想到服务器将EAR视为基本上下文而不是包含的WAR。