如何使WebLogic 12c使用Java EE版本5而不是6?

时间:2013-02-01 16:52:47

标签: jsf java-ee jstl weblogic

我们正在将在WebLogic 10上运行的应用程序迁移到WebLogic 12。

我在application.xml中将Java EE版本指定为5:

<?xml version="1.0" encoding="UTF-8"?>

<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd">

我不明白为什么我仍然在控制台上收到此警告信息...

"<Warning> <Munger> <BEA-2156203> <A version attrib
ute was not found in element "application" in the deployment descriptor weblogic
.utils.classloaders.GenericClassLoader@1e21f52 finder: weblogic.utils.classloade
rs.CodeGenClassFinder@2696ac annotation: /META-INF/application.xml. A version at
tribute is required, but this version of the WebLogic Server will assume that th
e latest version is used. Future versions of WebLogic Server will reject descrip
tors that do not specify the Java EE version. To eliminate this warning, add an
appropriate "version=" to element "application" in the deployment descriptor.>"

我能够部署该应用程序。但是当我运行应用程序时,我收到了这个错误:

WARN - javax.servlet.ServletException: Could not find a RenderKit for "HTML_BASIC"
javax.servlet.ServletException: Could not find a RenderKit for "HTML_BASIC"
    at javax.faces.webapp._ErrorPageWriter.throwException(_ErrorPageWriter.java:549)
    at javax.faces.webapp.FacesServlet.handleLifecycleException(FacesServlet.java:293)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:187)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:216)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:132)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:338)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
    at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3288)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3254)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
    at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2163)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2089)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2074)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1513)
    at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: java.lang.IllegalArgumentException: Could not find a RenderKit for "HTML_BASIC"
    at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getResponseStateManager(RendererUtils.java:1181)
    at org.apache.myfaces.lifecycle.DefaultRestoreViewSupport.isPostback(DefaultRestoreViewSupport.java:141)
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:80)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:178)
    ... 25 more

我们正在使用JSF 1.2,在部署应用程序之前,我确实部署了jsf 1.2。

这是我的weblogic-application.xml:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-application 
    xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/javaee_5.xsd http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.0/weblogic-application.xsd"
>
    <wls:application-param>
        <wls:param-name>webapp.encoding.default</wls:param-name>
        <wls:param-value>UTF-8</wls:param-value>
    </wls:application-param>

    <wls:prefer-application-packages>
        <wls:package-name>org.apache.*</wls:package-name>
        <wls:package-name>javax.faces.*</wls:package-name>
        <wls:package-name>com.sun.faces.*</wls:package-name>
        <wls:package-name>org.mozilla.javascript.*</wls:package-name>
        <wls:package-name>org.mozilla.classfile.*</wls:package-name>
    </wls:prefer-application-packages>

<wls:prefer-application-resources>
    <wls:resource-name>org.apache.*</wls:resource-name>
        <wls:resource-name>javax.faces.*</wls:resource-name>
        <wls:resource-name>com.sun.faces.*</wls:resource-name>
    <wls:resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</wls:resource-name>
    <wls:resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</wls:resource-name>
</wls:prefer-application-resources>

<wls:library-ref>
    <wls:library-name>jsf</wls:library-name>
    <wls:specification-version>1.2</wls:specification-version>
    <wls:implementation-version>1.2.9.0</wls:implementation-version>
    <wls:exact-match>true</wls:exact-match>
 </wls:library-ref>

</wls:weblogic-application>

更新: “无法找到RenderKit for”HTML_BASIC“'错误是由于缺少myfaces库引起的。我将myfaces-api.jar和myfaces-imp.jar添加到/ lib,错误消失了。之后我的应用运行正常。但我仍然收到抱怨Jave EE版本描述符丢失的警告信息。

更新2: 看起来关于Java EE版本描述符的警告是由jsf的双重部署引起的。我们的应用程序部署了jsf。如果我不从管理控制台单独部署jsf 1.2,那么我就不会收到警告。

0 个答案:

没有答案
相关问题