2014-06-11 53 views
2

我开发一个portlet应用程序使在liferay-plugin-package.properties安全管理:Liferay的6.2:ClassNotFoundException的:PACL时启用javax.faces.webapp.FacesServlet

security-manager-enabled=true 

应用程序启动时,我们在liferay 6.2 EE和6.2.1 CE日志(Tomcat 7 bundle)中获得以下堆栈跟踪。它只发生一次,它不会破坏任何东西,尽管这个消息Portlet可以正常工作。如果我们禁用portlet的liferay-plugin-package.properties中的安全管理器,则不会发生此异常。这个类“javax.faces.webapp.FacesServlet”不在portlet的.WAR中,并且它不在代码中使用(至少不直接使用,可能是依赖项)。该门户网站包括这些门户依赖项,不确定它是否可能相关:

portal-dependency-jars=jstl-api.jar,jstl-impl.jar 

请别人遇到此问题?任何想法解决它?

20:23:06,406 ERROR [localhost-startStop-1][BasePortalLifecycle:94] java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet 
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at com.liferay.portal.kernel.util.InstanceFactory.newInstance(InstanceFactory.java:52) 
    at com.liferay.portal.kernel.util.InstanceFactory.newInstance(InstanceFactory.java:27) 
    at com.liferay.portal.kernel.servlet.SecureServlet.doPortalInit(SecureServlet.java:101) 
    at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:44) 
    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:64) 
    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:56) 
    at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:54) 
    at com.liferay.portal.kernel.servlet.SecureServlet.init(SecureServlet.java:76) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:277) 
    at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:274) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAsPrivileged(Subject.java:536) 
    at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:309) 
    at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:169) 
    at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:123) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1268) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
    at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:133) 
    at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:156) 
    at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:145) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113) 
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 
+1

可能的重复?看看http://stackoverflow.com/questions/18030543/unable-to-initialize-facesservlet-in-tomcat-7-classnotfoundexception和http://stackoverflow.com/questions/22658185/java-lang-classnotfoundexception-的javax-面-web应用-FacesServlet的-primefaces。这似乎与Liferay PACL没有任何关系。您需要确保JSF jar可用于您的portlet - 在WEB-INF/lib中。 –

+0

你是正确的,这个错误与pacl没有多大关系,虽然由于某些原因它只发生在启用pacl时。谢谢 – Dominique

回答

1

看来Maven的已经自动生成在web.xml这些条目,可能是由于在我身边一个错误处理:使用javax面临包括在pom.xml中作为测试依赖而已,可能是我们做了一次范围错误或类似的东西。

删除这些行后,一切正常。谢谢!

1 <context-param> 
2  <param-name>javax.faces.PROJECT_STAGE</param-name> 
3  <param-value>Development</param-value> 
4 </context-param> 
5 <servlet> 
6  <servlet-name>Faces Servlet</servlet-name> 
7  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
8  <load-on-startup>1</load-on-startup> 
9 </servlet> 
10 <servlet-mapping> 
11  <servlet-name>Faces Servlet</servlet-name> 
12  <url-pattern>/faces/*</url-pattern> 
13 </servlet-mapping> 
相关问题