0

请帮忙解决这个问题,我要疯了...

我正在尝试使用 EJB 3 和 Struts 2 使用 Weblogic 10 作为应用程序服务器和 IIS 作为 Web 服务器(企业约束)来制作客户端-服务器 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 目录)中清晰可见,我也可以浏览它的包和类。我还将它放在 CLASSPATH 库和 Weblogic 初始化参数中,但没有任何效果。我不知道该怎么想。这是 Struts 2/Weblogic 集成错误吗?

更奇怪的是,最初我设法让 Struts 2 工作。然后由于某种原因(我真的不知道为什么)它停止了,我无法摆脱那个错误。

谢谢你的帮助。

4

1 回答 1

0

当所有希望都消失时,解决方案往往会出现。显然,我所要做的就是将所有 Struts 库(包括 Javassist)移动到父 EAR 项目的 /lib 目录中。这对我来说听起来很奇怪,但它有效,我坚持使用解决方案。

一般来说,我对 Weblogic 和 Enterprise 应用程序不是很熟悉,因此没有想到服务器将 EAR 作为基本上下文而不是包含的 WAR。

于 2010-10-12T14:56:37.363 回答