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

5 篇文章 0 订阅
5 篇文章 0 订阅

【系统配置简述】

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>

文章结束。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值