2011-07-04 70 views
0

我使用JSF2.0和hibernate开发了一个简单的演示Web应用程序。该webapp使用IBM FileNet 4.5.1来存储和检索上传的文件。 如果我在JBoss 6.0上部署这个webapp,一切正常。但是,一位客户要求我将它部署在JBoss 4.2.3上进行评估......并且不起作用。当我尝试访问IBM Filenet时,我收到一个错误...这里是堆栈跟踪:jboss 4.2.3应用程序连接IBM Filenet

17:32:47,353 INFO [STDOUT] 17:32:47,353 DEBUG JaasConfiguration:60 - Default JAAS Configuration: 
HttpCredentials { 
    com.idoox.security.jaas.HttpLoginModule required; 
} 

FileNetP8Engine { 
    com.filenet.api.authentication.jboss.login.FnClientLoginModule required; 
} 

FCLMStackingHelper { 
    org.jboss.security.ClientLoginModule required; 
} 

NameMapping { 
    com.idoox.security.jaas.NameLoginModuleNoAuth required; 
} 

Credentials { 
    com.idoox.security.jaas.GSSLoginModule required; 
} 

KrbCredentials { 
    com.sun.security.auth.module.Krb5LoginModule required; 
} 

NamePasswordAN { 
    com.idoox.security.jaas.NamePasswordLoginModule required; 
} 

CertsMapping { 
    com.idoox.security.jaas.CertsLoginModule required; 
} 

CachedKrbCredentials { 
    com.sun.security.auth.module.Krb5LoginModule required; 
} 

NamePasswordNoAN { 
    com.idoox.security.jaas.NamePasswordLoginModuleNoAuth required; 
} 

FileNetP8WSI { 
    com.filenet.api.util.WSILoginModule required; 
} 

FileNetP8 { 
    com.filenet.api.authentication.jboss.login.FnClientLoginModule required; 
} 

ReceivedCredentials { 
    com.idoox.security.jaas.GSSLoginModuleNoAuth required; 
} 

FileNetP8Server { 
    com.filenet.api.authentication.jboss.login.FnClientLoginModule required; 
} 

HttpRequest { 
    com.idoox.security.jaas.SmLoginModule required; 
} 

FileNetP8KerberosService { 
    com.filenet.api.authentication.jboss.login.FnClientLoginModule required; 
} 

NameDigestAN { 
    com.idoox.security.jaas.NameDigestLoginModule required; 
} 

17:32:47,355 INFO [STDOUT] 17:32:47,355 DEBUG JaasConfiguration:206 - Configured JAAS entry found (Default not used) for: 'FileNetP8WSI'  org.jboss.security.auth.spi.UsersRolesLoginModule required; 
17:32:47,367 ERROR [UsersRolesLoginModule] Failed to load users/passwords/role files 
java.io.IOException: No properties file: users.properties or defaults: defaultUsers.properties found 
    at org.jboss.security.auth.spi.Util.loadProperties(Util.java:315) 
    at org.jboss.security.auth.spi.UsersRolesLoginModule.loadUsers(UsersRolesLoginModule.java:186) 
    at org.jboss.security.auth.spi.UsersRolesLoginModule.createUsers(UsersRolesLoginModule.java:200) 
    at org.jboss.security.auth.spi.UsersRolesLoginModule.initialize(UsersRolesLoginModule.java:127) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:592) 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:756) 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:579) 
    at com.filenet.apiimpl.core.UserPasswordToken.getSubject(UserPasswordToken.java:112) 
    at com.filenet.api.util.UserContext.createSubject(UserContext.java:240) 
    at alekso.filenet.ce.CEConnection.establishConnection(CEConnection.java:59) 
    at alekso.filenet.ce.WSIConnector.GetDocument(WSIConnector.java:89) 
    at Alekso.BasDemo.DAL.FileNetProxy.retrieveFile(FileNetProxy.java:43) 
    at Alekso.BasDemo.Servlet.DownloadServlet.doDownload(DownloadServlet.java:67) 
    at Alekso.BasDemo.Servlet.DownloadServlet.doGet(DownloadServlet.java:42) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    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:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:595) 
17:32:47,417 INFO [STDOUT] 17:32:47,416 DEBUG EngineRuntimeException:207 - com.filenet.api.exception.EngineRuntimeException: E_NOT_AUTHENTICATED: The user is not authenticated. 
    at com.filenet.apiimpl.core.UserPasswordToken.getSubject(UserPasswordToken.java:127) 
    at com.filenet.api.util.UserContext.createSubject(UserContext.java:240) 
    at alekso.filenet.ce.CEConnection.establishConnection(CEConnection.java:59) 
    at alekso.filenet.ce.WSIConnector.GetDocument(WSIConnector.java:89) 
    at Alekso.BasDemo.DAL.FileNetProxy.retrieveFile(FileNetProxy.java:43) 
    at Alekso.BasDemo.Servlet.DownloadServlet.doDownload(DownloadServlet.java:67) 
    at Alekso.BasDemo.Servlet.DownloadServlet.doGet(DownloadServlet.java:42) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    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:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:595) 
Caused by: javax.security.auth.login.LoginException: Missing users.properties file. 
    at org.jboss.security.auth.spi.UsersRolesLoginModule.login(UsersRolesLoginModule.java:148) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:592) 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769) 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:579) 
    at com.filenet.apiimpl.core.UserPasswordToken.getSubject(UserPasswordToken.java:112) 
    ... 26 more 
17:32:47,421 INFO [STDOUT] 17:32:47,419 ERROR WSIConnector:100 - Errore nel documento con id {BDFCA4F2-B8C7-44EA-9481-4628C26A9DD5} 
com.filenet.api.exception.EngineRuntimeException: E_NOT_AUTHENTICATED: The user is not authenticated. 
    at com.filenet.apiimpl.core.UserPasswordToken.getSubject(UserPasswordToken.java:127) 
    at com.filenet.api.util.UserContext.createSubject(UserContext.java:240) 
    at alekso.filenet.ce.CEConnection.establishConnection(CEConnection.java:59) 
    at alekso.filenet.ce.WSIConnector.GetDocument(WSIConnector.java:89) 
    at Alekso.BasDemo.DAL.FileNetProxy.retrieveFile(FileNetProxy.java:43) 
    at Alekso.BasDemo.Servlet.DownloadServlet.doDownload(DownloadServlet.java:67) 
    at Alekso.BasDemo.Servlet.DownloadServlet.doGet(DownloadServlet.java:42) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    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:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:595) 
Caused by: javax.security.auth.login.LoginException: Missing users.properties file. 
    at org.jboss.security.auth.spi.UsersRolesLoginModule.login(UsersRolesLoginModule.java:148) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:592) 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769) 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:579) 
    at com.filenet.apiimpl.core.UserPasswordToken.getSubject(UserPasswordToken.java:112) 
    ... 26 more 
17:32:47,421 INFO [STDOUT] 17:32:47,421 ERROR DownloadServlet:89 - Impossibile recuperare il file allegato 
com.filenet.api.exception.EngineRuntimeException: E_NOT_AUTHENTICATED: The user is not authenticated. 
    at com.filenet.apiimpl.core.UserPasswordToken.getSubject(UserPasswordToken.java:127) 
    at com.filenet.api.util.UserContext.createSubject(UserContext.java:240) 
    at alekso.filenet.ce.CEConnection.establishConnection(CEConnection.java:59) 
    at alekso.filenet.ce.WSIConnector.GetDocument(WSIConnector.java:89) 
    at Alekso.BasDemo.DAL.FileNetProxy.retrieveFile(FileNetProxy.java:43) 
    at Alekso.BasDemo.Servlet.DownloadServlet.doDownload(DownloadServlet.java:67) 
    at Alekso.BasDemo.Servlet.DownloadServlet.doGet(DownloadServlet.java:42) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    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:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:595) 
Caused by: javax.security.auth.login.LoginException: Missing users.properties file. 
    at org.jboss.security.auth.spi.UsersRolesLoginModule.login(UsersRolesLoginModule.java:148) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:592) 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769) 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:579) 
    at com.filenet.apiimpl.core.UserPasswordToken.getSubject(UserPasswordToken.java:112) 
    ... 26 more 

有人可以提出一个解决方案吗? 堆栈跟踪讨论users.properties文件,但我没有在JBoss 6.0中。如果我真的需要创建一个为了让JBoss 4.2.3工作,我应该放入什么?我在我的代码中针对FileNet配置连接,从其他地方读取参数...... jboss 4.2.3和jboss 6.0之间的区别是什么导致了我这些麻烦?

+0

JBoss 4.2不支持JSF 2.这可能是您问题的根本原因。 – skaffman

+0

@skaffman:我添加了适当的mojarra库,并且一切正常。使用另一个存储库层,它使用文件系统作为存储文件的地方,一切工作正常......所以问题不在于JSF。 – themarcuz

回答

1

解决! 这是一个愚蠢的错误。 在文件的login-config.xml中,你需要为了加入这个

<application-policy name="FileNetP8WSI"> 
    <authentication> 
     <login-module code="com.filenet.api.util.WSILoginModule" flag="required"/> 
    </authentication> 
</application-policy> 

与FileNet的通信工作。 我拼错了,这就是为什么它不起作用。

0

您使用哪种传输协议? IIOP还是WSI?如果你使用WSI,那么你的应用应该在理论上工作。您的CE托管在Jboss 6.0实例上,对吗?

我假设你使用的是IIOP传输协议。在这种情况下,您的客户端应用程序需要与服务器应用程序具有相同的J2EE库。我以前从未在Jboss上编写FileNet客户端,但使用WebLogic或WAS时,需要在客户端上使用与服务器上相同版本的.jar文件。举例来说,如果我正在编写与WebLogic系统上托管的CE对话的客户机,则需要在客户机上使用与服务器上托管的相同版本的weblogic.jar。

可以编写一个运行在与CE不同版本的Jboss上的客户端,但您需要使用WSI传输协议。好消息是你不需要做任何代码修改 - 你只需要改变你的配置来使用WSI而不是IIOP。