2009-09-29 5 views
1

여기 내 재치가 조금있다. 이JSF Myfaces NullPointerException : serialFactory

<?xml version="1.0"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <!-- Use Documents Saved as *.xhtml --> 
    <context-param> 
     <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
     <param-value>.xhtml</param-value> 
    </context-param> 
    <!-- Special Debug Output for Development --> 
    <context-param> 
     <param-name>facelets.DEVELOPMENT</param-name> 
     <param-value>false</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.ERROR_HANDLING</param-name> 
     <param-value>false</param-value> 
    </context-param> 
    <!-- Optional JSF-RI Parameters to Help Debug --> 
    <context-param> 
     <param-name>com.sun.faces.validateXml</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>com.sun.faces.verifyObjects</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <!-- context-param> 
     <param-name>javax.faces.CONFIG_FILES</param-name> 
     <param-value> 
     /WEB-INF/faces-config.xml 
     </param-value> 
     </context-param--> 
    <context-param> 
     <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.PRETTY_HTML</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name> 
     <param-value>com.sun.facelets.FaceletViewHandler</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
     <param-value>server</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name> 
     <param-value>false</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.CONFIG_FILES</param-name> 
     <param-value> 
      /WEB-INF/faces-config-connections.xml, 
      /WEB-INF/faces-config-general.xml, 
      /WEB-INF/faces-config-ims.xml, 
      /WEB-INF/faces-config-maintenance.xml, 
      /WEB-INF/faces-config-menu.xml, 
      /WEB-INF/faces-config-profile.xml, 
      /WEB-INF/faces-config-registration-activation.xml, 
      /WEB-INF/faces-config-registration.xml, 
      /WEB-INF/faces-config-solutions.xml, 
      /WEB-INF/faces-config-topup.xml,    
      /WEB-INF/faces-config-transfer.xml 
     </param-value> 
    </context-param> 
    <context-param> 
     <description>Used for addition Im. Only relevant for client side 
      state saving. See MyFaces wiki/web site documentation for instructions 
      on how to configure an application for diffenent encryption strengths. 
     </description> 
     <param-name>org.apache.myfaces.SECRET</param-name> 
     <param-value>NzY1NDMyMTA=</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.SERIAL_FACTORY</param-name> 
     <param-value>org.apache.myfaces.JbossSerialFactory</param-value> 
    </context-param> 
    <filter> 
     <filter-name>SessionTimeoutFilter</filter-name> 
     <filter-class> 
      za.co.fnbconnect.portal.util.SessionTimeoutFilter 
     </filter-class> 
    </filter> 
    <filter> 
     <filter-name>StatsFilter</filter-name> 
     <filter-class> 
      za.co.fnbconnect.portal.util.StatsFilter 
     </filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>StatsFilter</filter-name> 
     <url-pattern>*.faces</url-pattern> 
    </filter-mapping> 
    <filter> 
     <display-name>RichFaces Filter</display-name> 
     <filter-name>richfaces</filter-name> 
     <filter-class>org.ajax4jsf.Filter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>SessionTimeoutFilter</filter-name> 
     <url-pattern>*.faces</url-pattern> 
    </filter-mapping> 
    <filter-mapping> 
     <filter-name>richfaces</filter-name> 
     <servlet-name>Faces Servlet</servlet-name> 
     <dispatcher>REQUEST</dispatcher> 
     <dispatcher>FORWARD</dispatcher> 
     <dispatcher>INCLUDE</dispatcher> 
    </filter-mapping> 
    <!-- tomahawk extension filters --> 
    <filter> 
     <filter-name>MyFacesExtensionsFilter</filter-name> 
     <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class> 
     <init-param> 
      <param-name>uploadMaxFileSize</param-name> 
      <param-value>20m</param-value> 
     </init-param> 
    </filter> 

    <!-- extension mapping for adding <script/>, <link/>, and other resource tags to JSF-pages --> 
    <filter-mapping> 
     <filter-name>MyFacesExtensionsFilter</filter-name> 
     <!-- servlet-name must match the name of your javax.faces.webapp.FacesServlet entry --> 
     <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping> 

    <!-- extension mapping for serving page-independent resources (javascript, stylesheets, images, etc.) --> 
    <filter-mapping> 
     <filter-name>MyFacesExtensionsFilter</filter-name> 
     <url-pattern>/faces/myFacesExtensionResource/*</url-pattern> 
    </filter-mapping> 
    <!-- end -->  
    <listener> 
     <listener-class> 
      za.co.fnbconnect.portal.util.FNBConnectSessionListener 
     </listener-class> 
    </listener> 
    <!-- Listener, that does all the startup work (configuration, init). --> 
    <listener> 
     <listener-class> 
      org.apache.myfaces.webapp.StartupServletContextListener 
     </listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>Log4jInitialiser</servlet-name> 
     <servlet-class>za.co.fnbconnect.log4j.Log4jInitializer</servlet-class> 
     <!-- DEV --> 
     <init-param> 
      <param-name>DEV-hosts</param-name> 
      <param-value>192.168.18.14</param-value> 
     </init-param> 
     <init-param> 
      <param-name>DEV-log4j-init-file</param-name> 
      <param-value>/opt/PropertiesManager/tomcat-log4j-DEV.xml</param-value> 
     </init-param> 

     <!-- INT --> 
     <init-param> 
      <param-name>INT-hosts</param-name> 
      <param-value>192.168.18.73</param-value> 
     </init-param> 
     <init-param> 
      <param-name>INT-log4j-init-file</param-name> 
      <param-value>/opt/PropertiesManager/tomcat-log4j-INT.xml</param-value> 
     </init-param> 

     <!-- PREPROD --> 
     <init-param> 
      <param-name>PREPROD-hosts</param-name> 
      <param-value>192.168.18.139</param-value> 
     </init-param> 
     <init-param> 
      <param-name>PREPROD-log4j-init-file</param-name> 
      <param-value>/opt/PropertiesManager/tomcat-log4j-PREPROD.xml</param-value> 
     </init-param> 

     <!-- LOAD --> 
     <init-param> 
      <param-name>LOAD-hosts</param-name> 
      <param-value>192.168.44.6,192.168.44.13</param-value> 
     </init-param> 
     <init-param> 
      <param-name>LOAD-log4j-init-file</param-name> 
      <param-value>/opt/PropertiesManager/tomcat-log4j-LOAD.xml</param-value> 
     </init-param> 

     <!-- PROD --> 
     <init-param> 
      <param-name>PROD-hosts</param-name> 
      <param-value>192.168.34.6,192.168.34.135</param-value> 
     </init-param> 
     <init-param> 
      <param-name>PROD-log4j-init-file</param-name> 
      <param-value>/opt/PropertiesManager/tomcat-log4j-PROD.xml</param-value> 
     </init-param> 


     <!-- Default when running on the PC --> 
     <init-param> 
      <param-name>DEFAULT-log4j-init-file</param-name> 
      <param-value>C:/FNBConnect/PropertiesManager/FE/tomcat-log4j-PC.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.faces</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout>10</session-timeout> 
    </session-config> 
    <!-- Welcome files --> 
    <error-page> 
     <error-code>401</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>402</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>403</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>404</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>405</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>406</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>407</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>408</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>409</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>410</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>411</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>412</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>413</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>414</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>415</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>416</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>417</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>418</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>422</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>423</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>424</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>425</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>426</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>449</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>500</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>501</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>502</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>503</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>504</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>505</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>506</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>507</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>509</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <error-page> 
     <error-code>510</error-code> 
     <location>/GeneralError.jsp</location> 
    </error-page> 
    <login-config> 
     <auth-method>BASIC</auth-method> 
    </login-config> 
</web-app> 

필자는 소스를 쳐다 보면서 내 web.xml 파일입니다

java.lang.NullPointerException: serialFactory 
at org.apache.myfaces.shared_impl.util.StateUtils.getAsByteArray(StateUtils.java:182) 
at org.apache.myfaces.shared_impl.util.StateUtils.construct(StateUtils.java:149) 
at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.writeViewStateField(HtmlResponseStateManager.java:104) 
at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.writeState(HtmlResponseStateManager.java:94) 
at javax.faces.render.ResponseStateManager.writeState(ResponseStateManager.java:67) 
at org.ajax4jsf.application.AjaxStateManager.writeState(AjaxStateManager.java:294) 
at org.ajax4jsf.application.AjaxStateManager.writeState(AjaxStateManager.java:256) 
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:620) 
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) 
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) 
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41) 
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:155) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) 
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) 
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368) 
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at za.co.fnbconnect.portal.util.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:94) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at za.co.fnbconnect.portal.util.StatsFilter.doFilter(StatsFilter.java:90) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) 
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) 
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) 
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767) 
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697) 
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889) 
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) 
at java.lang.Thread.run(Unknown Source) 

과이 조직을 얻고 싶은 것 : 나는 JSF 페이지를 렌더링 할 때 임은 내 로그에 다음하기 컨텍스트에서 .apache.myfaces.SERIAL_FACTORY, 어떤 이유로 든 문제가 없습니다. 누구든지 아이디어가 있습니까?

답변

1

그냥 추측 (나는이 밖으로 시도하지 않은),하지만 비슷한 스택 추적뿐만 아니라 속성으로 SERIAL_FACTORY 수출의 코드 수정 것으로 보인다 않습니다 여기

http://wiki.apache.org/myfaces/PortletSerialFactoryWorkaround

을 그들이 추천 수정을

java.lang.NullPointerException: serialFactory 
     at org.apache.myfaces.shared_impl.util.StateUtils.getAsByteArray(StateUtils.java:174) 
     at org.apache.myfaces.shared_impl.util.StateUtils.construct(StateUtils.java:150) 
     at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.writeState(HtmlResponseStateMa 
nager.java:73) 
     at org.apache.myfaces.application.jsp.JspStateManagerImpl.writeState(JspStateManagerImpl.jav 
a:430) 

을 그리고 : : 예외가 지정되어 "이 문제를 해결하려면, MyFacesGenericPortlet를 확장하고 다음과 같이 초기화() 메소드를 오버라이드 (override) :"

을3210
public void init() throws PortletException, UnavailableException 
{ 
    super.init(); 
    getPortletContext().setAttribute("org.apache.myfaces.SERIAL_FACTORY", new org.apache.myfaces.shared_impl.util.serial.DefaultSerialFactory()); 
}