解决weblogic12c启动时报java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener的问题。

【系统配置简述】

weblogic版本:weblogic12.2.1.3.0

Myfaces:2.3.2

SpringBoot: 1.5.13.RELEASE

Spring: 4.3.17.RELEASE

jdk: Java HotSpot(TM) 64-Bit Server VM 1.8.0_60

weblogic.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
	xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
	<container-descriptor>
		<prefer-application-packages>
			<package-name>javax.faces.*</package-name>
			<package-name>com.sun.faces.*</package-name>
			<package-name>com.bea.faces.*</package-name>
		</prefer-application-packages>
		<prefer-application-resources>
			<resource-name>javax.faces.*</resource-name>
			<resource-name>com.sun.faces.*</resource-name>
			<resource-name>com.bea.faces.*</resource-name>
			<resource-name>META-INF/services/javax.servlet.ServletContainerInitializer
			</resource-name>
			<resource-name>META-INF/services/com.sun.faces.*</resource-name>
		</prefer-application-resources>
	</container-descriptor>
</weblogic-web-app>

在weblogic部署应用时,日志报以下异常:

####<2018-12-20 下午03时57分20,245秒 CST> <Error> <HTTP> <chanson-PC> <myserver> <[ACTIVE] ExecuteThread: '15' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <d30fb6ba-70f8-424f-833b-e703fd53c4e5-0000001a> <1545292640245> <[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-101267> <Failed while destroying filter: rewriteFilter.
java.lang.NullPointerException
	at org.ocpsoft.rewrite.servlet.RewriteFilter.destroy(RewriteFilter.java:306)
	at weblogic.servlet.internal.FilterManager$FilterDestroyAction.run(FilterManager.java:416)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
	at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
	at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
……
####<2018-12-20 下午03时57分21,602秒 CST> <Error> <Deployer> <chanson-PC> <myserver> <[ACTIVE] ExecuteThread: '15' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <d30fb6ba-70f8-424f-833b-e703fd53c4e5-0000001a> <1545292641602> <[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-149265> <Failure occurred in the execution of deployment request with ID "2311777783901134" for task "0" on [partition-name: DOMAIN]. Error is: "weblogic.application.ModuleException: java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener"
weblogic.application.ModuleException: java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
	at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
	at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
	……
Caused By: java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
	at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1029)
	at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:990)
	at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:104)
	at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:611)
	at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:543)
	at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:496)
	at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:72)
	at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:53)
	at weblogic.servlet.internal.EventsManager.createListener(EventsManager.java:654)
	at weblogic.servlet.internal.WebAppServletContext.addListener(WebAppServletContext.java:3854)
	at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:108)
	at weblogic.servlet.internal.WebAppServletContext.initContainerInitializer(WebAppServletContext.java:1404)
	at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1364)
	at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1345)
	at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1917)
	at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3101)
	at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1843)
	at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:884)
	at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)
	at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
	at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)
	at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
	at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233)
	at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
	at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:78)
	at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:52)
	at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:752)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
	at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:262)
	at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:52)
	at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
	at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:90)
	at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:631)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:171)
	at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:121)
	at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:348)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:907)
	at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1468)
	at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:459)
	at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:181)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:217)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:14)
	at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:69)
	at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:670)
	at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)
	at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)
	at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)
	at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
	at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:644)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:415)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:355)
> 

【分析】

    The missing class is part of Mojarra, which is actually the competitor of MyFaces.
You shouldn't need that class at all when using MyFaces. This exception can have the following possible causes:
There's a manually definied <listener> entry in webapp's web.xml or the web-fragment.xml of any of the deployed JARs in /WEB-INF/lib which references this Mojarra-specific listener class.
    There's somewhere a loose Mojarra .tld file in the classpath (very unlikely, who would ever extract a JAR file and put its loose contents in the classpath?). TLD files get autoinitialized and can contain a <listener> entry which can trigger autoregistration of a ServletContextListener implementation (such as the Mojarra ConfigureListener).
Those conflicts can be fixed by just removing it.

    Mojarra是sun公司提供的jsf实现,而Myfaces是另一种jsf开源实现,本系统采用的Myfaces,根据上述英文描述,必须把Mojarra相关实现的com.sun.faces.*配置删除。

  【解决】

把com.sun.faces.*相关配置内容删除即可。

weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
	xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
	<container-descriptor>
		<prefer-application-packages>
			<package-name>javax.faces.*</package-name>
			<package-name>com.bea.faces.*</package-name>
		</prefer-application-packages>
		<prefer-application-resources>
			<resource-name>javax.faces.*</resource-name>
			<resource-name>com.bea.faces.*</resource-name>
			<resource-name>META-INF/services/javax.servlet.ServletContainerInitializer
			</resource-name>
		</prefer-application-resources>
	</container-descriptor>
</weblogic-web-app>

文章结束。

猜你喜欢

转载自blog.csdn.net/cysunc/article/details/85250606