oracle - JSF Faces Bridge 在部署到 oc4j 容器时得到 java.lang.NullPointerException

标签 oracle jsf portlet oracle-adf

我正在使用 Webcenter 预配置的 oc4j 运行 JDeveloper 10.1.3.4。
我正在尝试 portletize 一个 vanilla JSF webcenter 项目。

  • 我使用 webcenter 应用程序模板创建了一个应用程序。
  • 添加一个 JSF JSP,简单地将其称为具有所有默认值的索引。
  • 添加部署配置文件并部署到本地 oc4j
  • 导航到 jsf 页面,一切正常。
  • 右键单击 ViewController 并添加库 Portlet Faces Bridge
  • 右键单击 ViewController 并添加 Portlet 部署描述符。
  • 使用来自 link text 的值编辑 portlet.xml
  • 在 portlet.xml 中,我用我的/index.jspx 替换了默认页面 View

    当我尝试部署到本地 oc4j 时,我得到以下信息

  • ---- Deployment started. ---- May 1, 2009 2:29:37 PM Target platform is Standalone OC4J 10g 10.1.3 (localAppServer). Wrote WAR file to C:\jdevstudio10134\jdev\mywork\test\ViewController\deploy\webapp2.war Wrote EAR file to C:\jdevstudio10134\jdev\mywork\test\ViewController\deploy\webapp2.ear Backing up generic archive file :/C:/jdevstudio10134/jdev/mywork/test/ViewController/deploy/webapp2_generic.ear Creating WSDLs for the WSRP Application WSDLs for the WSRP Application have been created Uploading file webapp2.ear ... Uploading file webapp2.ear ... Application Deployer for webapp2 STARTS. Copy the archive to C:\jdevstudio10134\j2ee\home\applications\webapp2.ear Initialize C:\jdevstudio10134\j2ee\home\applications\webapp2.ear begins... Unpacking webapp2.ear Done unpacking webapp2.ear Unpacking webapp2.war Done unpacking webapp2.war Initialize C:\jdevstudio10134\j2ee\home\applications\webapp2.ear ends... Starting application : webapp2 Initializing ClassLoader(s) application : webapp2 is in failed state Operation failed with error: java.lang.NullPointerException

    Deployment failed Elapsed time for deployment: 3 seconds

    Deployment incomplete. #### May 1, 2009 2:29:40 PM


    如果我手动部署 WAR 文件并导航到该页面,则会出现 500 内部服务器错误。

    09/05/01 14:49:21.984 webapp2: Servlet error java.lang.NullPointerException at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152) at oracle.portlet.server.bridges.jsf.PortletViewHandlerImpl.renderView(PortletViewHandlerImpl.java:73) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:268) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:214) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher .java:713) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher .java:370) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler .java:871) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler .java:453) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler .java:221) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.4.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor .java:303) at java.lang.Thread.run(Thread.java:595)



    我的 portlet.xml 文件看起来像
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <portlet-app version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
     <portlet> 
         <description>myapp</description> 
         <portlet-name>test</portlet-name> 
         <display-name>myapp</display-name> 
         <portlet-class>oracle.portlet.server.bridges.jsf.FacesPortlet 
         </portlet-class> 
         <init-param> 
          <name>DefaultPage.view</name>
          <value>/index.jspx</value>
         </init-param> 
         <init-param> 
          <name>BridgeLifecycleListeners</name>
          <value>
           oracle.portlet.server.bridges.jsf.adf.ADFFacesBridgeLifecycleListener,
           oracle.portlet.server.bridges.jsf.adf.BindingFacesBridgeLifecycleListener
          </value>
         </init-param> 
        <supports> 
         <mime-type>text/html</mime-type> 
         <portlet-mode>VIEW</portlet-mode> 
         </supports> 
         <supported-locale>en</supported-locale> 
         <portlet-info> 
          <title>myapp</title> 
          <short-title>test</short-title> 
         </portlet-info> 
       </portlet> 
    </portlet-app>
    

    ...如果我删除文件并重新部署 jspx 页面工作正常。

    最佳答案

    您应该转向使用比 oc4j 好得多的 wls 的 jdev 11g

    关于oracle - JSF Faces Bridge 在部署到 oc4j 容器时得到 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812740/

    相关文章:

    oracle - 使用 SQL Loader 将数据加载到表中

    oracle - 如何从存储过程返回空游标?

    jsf - Tomcat 6 集群 - 经过身份验证的 session 复制

    java - 如何以编程方式将内容写入json文件

    java - portlet.jar 上的类加载器冲突

    sql - 从包含来自单独列的数据的列中选择数据

    java - 使用 hibernate 支持多数据库

    java - 将参数传递给 JSF 函数

    java - RichFaces 3.3 : Calling actionListener on window. 加载

    java - 在 session 中保存 - Liferay Portlet