Ale*_*ühl 5 weblogic java-ee seam2 weblogic12c
我们开发了基于Seam 2的Java EE 5应用程序,该应用程序可在Weblogic 11g上运行。
现在,我尝试按照与以前的WLS相同的步骤,将相同的WAR文件部署到新的Weblogic 12c(在本地Windows 7计算机上为12.1.1.0),包括部署所需的JSF 1.2库。
应用程序的部署和启动工作正常,但是当我在浏览器中打开URL时,出现500错误,并且日志文件显示以下异常:
java.lang.UnsupportedOperationException
at javax.faces.application.Application.getResourceHandler(Application.java:287)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:588)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
...
Run Code Online (Sandbox Code Playgroud)
类Application中有问题的操作属于JSF的2.0版本,由于我声明要使用JSF 1.2,所以我不明白为什么容器会尝试调用它。
有什么想法会导致问题,以及如何将现有的Java EE 5应用程序简单地迁移到WLS 12?
编辑1/2/12:由于没有答案,也许有一点赏金会有所帮助吗?;-)不好意思,有什么我可以提供的细节来帮助我吗?
编辑1/5/12:与cj91请求有关-该项目不是基于Maven的,因此没有POM。但是这是部署描述符weblogic.xml:
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
<library-ref>
<library-name>jsf</library-name>
<specification-version>1.2</specification-version>
<implementation-version>1.2</implementation-version>
<exact-match>false</exact-match>
</library-ref>
</weblogic-web-app>
Run Code Online (Sandbox Code Playgroud)
这是蚂蚁建造的罐子清单:
commons-digester.jar
jboss-seam-debug.jar
jboss-seam-excel.jar
jboss-seam-ioc.jar
jboss-seam-mail.jar
jboss-seam-pdf.jar
jboss-seam-rss.jar
jboss-seam-ui.jar
jsf-facelets.jar
jxl.jar
richfaces-impl.jar
richfaces-ui.jar
standard.jar
jstl.jar
jsf-api.jar
commons-collections-3.2.1.jar
commons-lang.jar
jboss-seam.jar
persistence-api.jar
jta.jar
jsf-impl.jar
darkX.jar
glassX.jar
laguana.jar
antlr-runtime.jar
commons-beanutils.jar
core.jar
drools-templates.jar
drools-decisiontables.jar
drools-compiler.jar
drools-api.jar
drools-core.jar
janino.jar
jboss-el.jar
jboss-seam-remoting.jar
jbpm-jpdl.jar
mvel2.jar
richfaces-api.jar
spiffy-with_source-all-0.05.jar
SuperCSV-1.52.jar
commons-logging.jar
dom4j.jar
javassist.jar
cglib.jar
antlr.jar
slf4j-api.jar
slf4j-log4j12.jar
hibernate-core.jar
hibernate-search.jar
hibernate-commons-annotations.jar
hibernate-annotations.jar
hibernate-entitymanager.jar
hibernate-validator.jar
jboss-common-core.jar
concurrent.jar
lucene-core.jar
gwt-servlet.jar
Run Code Online (Sandbox Code Playgroud)
我敢肯定其中有许多jar超出了需要,但这就是它当前在WebLogic 10.3.5上运行的设置。
我怀疑jsf和jstl jars是问题的根源,但是从战争中删除它们并没有改变任何事情。
问题仍然是-为什么WLS 12尝试从JSF 2.0执行某些操作?
编辑1/6/12:我设法解决了原来的问题-仍然该应用程序无法正常运行(这对我来说仍然很奇怪,因为我不希望有人必须在以前运行的应用程序中更改许多内容,更新到WLS的新版本),但我在此声明此问题已解决。
对于那些感兴趣的人,我做了-感谢答案的帮助以及对这些事情的一些搜索:
将weblogic.xml更改为:
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>false</prefer-web-inf-classes>
</container-descriptor>
<library-ref>
<library-name>jsf</library-name>
<specification-version>1.2</specification-version>
<implementation-version>1.2.9.0</implementation-version>
<exact-match>true</exact-match>
</library-ref>
</weblogic-web-app>
Run Code Online (Sandbox Code Playgroud)
从WEB-INF / lib删除了以下jar:
jsf-impl.jar
jsf-api.jar
persistence-api.jar
jta.jar
jstl.jar
Run Code Online (Sandbox Code Playgroud)
在faces-config.xml中,将视图处理程序更改为(由于IllegalStateException,请参见此处):
<view-handler>org.ajax4jsf.application.AjaxViewHandler</view-handler>
Run Code Online (Sandbox Code Playgroud)
在persistence.xml中,将查询工厂类更改为(由于ClassNotFoundException:org.hibernate.hql.ast.HqlToken,请参见此处)
<property name="hibernate.query.factory_class" value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory"/>
Run Code Online (Sandbox Code Playgroud)
您应该问自己为什么要升级到较新的容器而不升级应用程序。如果答案是“因为代码库太大”并且您的旧容器运行良好,请不要管它。
但是,有两个可能的错误:1)您的 web-inf/lib 中是否嵌入了任何 jsf api jar?2) 您确定 1.2 支持设置正确吗?如果您要加载 jsf2.0 类,您可能需要使用一个特殊的类加载器来首先读取 1.2 jar。
编辑:至少,这些 jar 应该由您的容器提供,并且不应包含在您的 WEB-INF/lib 中:
我相当确定这些也会引起问题:
| 归档时间: |
|
| 查看次数: |
12222 次 |
| 最近记录: |