Liferay 6.2: ClassNotFoundException: javax.faces.webapp.FacesServlet, когда включен PACL

Я разрабатываю приложение с портлетами, которое включает менеджер безопасности в liferay-plugin-package.properties:

security-manager-enabled=true

Когда приложение запускается, мы получаем трассировку стека ниже в журналах liferay 6.2 EE и 6.2.1 CE (комплект Tomcat 7). Это происходит только один раз, и это ничего не сломает, несмотря на это сообщение, портлет работает нормально. Если мы отключим менеджер безопасности в liferay-plugin-package.properties портлета, то это исключение не произойдет. Этот класс "javax.faces.webapp.FacesServlet" отсутствует в.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 ответ

Похоже, что 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>
Другие вопросы по тегам