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

本文介绍在WebLogic上部署使用MyFaces的JSF应用时遇到的ClassNotFoundException异常,详细分析了问题原因,指出Mojarra与MyFaces冲突导致,并提供了解决方案,即修改weblogic.xml配置文件,删除com.sun.faces.*相关配置。
部署运行你感兴趣的模型镜像

【系统配置简述】

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>

文章结束。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

<think>好的,我现在需要解决用户提出的WebLogic启动时出现的“java.lang.Exception: adminToProduction”错误。首先,我得理解这个错误的具体原因。用户之前提到过在Idea和WebLogic环境下遇到了文件访问权限的问题,可能这个错误与部署配置或权限有关。 根据引用内容,用户之前尝试将WebLogic的自动部署目录指向Idea编译输出的路径,但遇到了访问拒绝的问题。现在这个adminToProduction错误可能也是类似的配置问题。首先,我应该考虑WebLogic的部署模式是否正确设置。WebLogic有两种部署模式:stage和nostage。在stage模式下,服务器会将部署文件复制到目标目录,而nostage模式则直接使用源目录中的文件。如果用户配置为nostage模式,但目录权限不正确,可能导致无法访问编译后的文件,从而引发错误。 接下来,检查权限问题。用户提到即使指向旧的编译文件也会报错,说明权限设置可能有问题。需要确认WebLogic服务运行的用户(比如weblogic用户)是否有权限读取Idea编译输出的目录。在Linux系统中,可能需要使用chmod或chown命令修改权限;在Windows上,则需要检查文件夹的安全属性,确保WebLogic进程有足够的访问权限。 另外,部署目录的配置是否正确也很重要。用户之前尝试将autodeploy目录指向Idea的输出路径,但可能存在路径配置错误,比如路径中包含空格或特殊字符,或者路径不存在。需要检查domain的配置文件(如config.xml)中的部署路径是否正确,并确保路径存在且可访问。 还有可能的是临时文件或缓存导致的问题WebLogic可能会缓存旧的部署信息,导致冲突。清除临时目录(如domain目录下的servers、tmp、cache文件夹)可能会有帮助。同时,检查日志文件(如adminServer.log)中的详细错误信息,可以更准确地定位问题根源。 最后,考虑WebLogic版本和Idea插件的兼容性。如果使用的是较旧或较新的版本,可能存在已知的配置问题,需要查阅官方文档或社区支持,确认是否有相关的补丁或配置调整建议。</think>### WebLogic "adminToProduction" 异常解决方案 #### 1. 检查部署模式配置 WebLogic部署模式分为$stage$(默认)和$nostage$两种: - **stage模式**:部署文件会被复制到$domain/servers/<server_name>/stage$目录 - **nostage模式**:直接使用原始路径文件 **操作步骤**: 1. 登录WebLogic控制台 2. 进入`Deployments` -> 选择应用 -> `Configuration` -> `Deployment`页签 3. 确认`Staging Mode`设置为与部署目录匹配的模式 4. 若使用nostage模式,需确保路径权限正确[^1] #### 2. 验证文件系统权限(以Windows为例) ```powershell # 查看目录权限 icacls "E:\project\build\output" # 授予完全控制权限 icacls "E:\project\build\output" /grant weblogic:(OI)(CI)F ``` *注意:weblogic需替换为实际服务运行账户* #### 3. 清理临时文件 删除以下目录内容: ``` E:\weblogic\user_projects\domains\base_domain\servers\AdminServer\tmp E:\weblogic\user_projects\domains\base_domain\servers\AdminServer\cache ``` #### 4. 检查部署描述符 验证$weblogic.xml$配置: ```xml <weblogic-web-app> <container-descriptor> <prefer-web-inf-classes>true</prefer-web-inf-classes> </container-descriptor> </weblogic-web-app> ``` #### 5. 查看详细日志 分析$domain/servers/AdminServer/logs/AdminServer.log$,搜索关键错误上下文: ``` ####<时间戳> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID "0000000000000000" for task "0". Error is: "weblogic.application.ModuleException: java.lang.Exception: adminToProduction"> ``` #### 6. 重置安全数据(备选方案) 停止服务后删除: ``` E:\weblogic\user_projects\domains\base_domain\servers\AdminServer\data\ldap\ E:\weblogic\user_projects\domains\base_domain\security\DefaultAuthenticatorInit.ldift ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值