将 jsf 1.2 迁移到 2.0 时出错
Posted
技术标签:
【中文标题】将 jsf 1.2 迁移到 2.0 时出错【英文标题】:Error while migrating jsf 1.2 to 2.0 【发布时间】:2014-06-11 08:38:10 【问题描述】:我想迁移 JSF 版本并使用此 url 作为参考 Migrating from JSF 1.2 to JSF 2.0
我的视图文件更改为
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:sf="http://www.springframework.org/tags/faces"
xmlns:fmt="http://java.sun.com/jstl/fmt"
xmlns:sec="http://www.springframework.org/security/facelets/tags">
faces-config file changed as:
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
但是在 weblogic 中部署我的应用程序时。 我收到以下错误
用户定义的监听器 com.sun.faces.config.ConfigureListener 失败:java.lang.RuntimeException:com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED!javax.faces.context.ExceptionHandlerFactory。 java.lang.RuntimeException:com.sun.faces.config.ConfigurationException:配置失败! javax.faces.context.ExceptionHandlerFactory 在 com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:287) 在 weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481) 在 weblogic.security。 acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 在 weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) 在 weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181) 在 weblogic .servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1801) 在 weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3045) 在 weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1397) 在weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:460) 在 weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.ja va:83) 在 weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) 在 weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200) 在 weblogic.application.internal.flow .ModuleListenerInvoker.start(ModuleListenerInvoker.java:247) 在 weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83) 在 weblogic .application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) 在 weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27) 在 weblogic.application.internal.BaseDeployment$2.next(BaseDeployment. java:1267) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83) 在 weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:409) 在 weblogic.application.internal.EarDeployment.activate(EarDeployment .java:54) 在 weblogic.application.in ternal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161) 在 weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79) 在 weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java: 569) 在 weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150) 在 weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116) 在 weblogic.deploy.internal .targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323) 在 weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844) 在 weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java :1253) 在 weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440) 在 weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.com mit(DeploymentServiceDispatcher.java:163) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:181) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:12 ) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:67) 在 weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516) 在 weblogic.work.ExecuteThread.execute(ExecuteThread .java:201) 在 weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 引起:com.sun.faces.config.ConfigurationException:配置失败! javax.faces.context.ExceptionHandlerFactory 在 com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:357) 在 com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:219) 在 weblogic.servlet。 internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481) 在 weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 在 weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)在 weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181) 在 weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1801) 在 weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3045) ) 在 weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1397) 在 weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:460) 在 weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver .java:425) 在 webl ogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83) 在 weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) 在 weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver. java:200) 在 weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247) 在 weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425) 在 weblogic.application.utils。 StateMachineDriver.nextState(StateMachineDriver.java:83) 在 weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) 在 weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27) 在 weblogic .application.internal.BaseDeployment$2.next(BaseDeployment.java:1267) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83) 在 weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:409)在 weblogic.application.internal .EarDeployment.activate(EarDeployment.java:54) 在 weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161) 在 weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79) 在 weblogic。 deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569) 在 weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150) 在 weblogic.deploy.internal.targetserver.operations。 ActivateOperation.doCommit(ActivateOperation.java:116) 在 weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323) 在 weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)在 weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253) 在 weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)在 weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:181) 在 weblogic.deploy.service.internal.targetserver .DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:12) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:67) 在 weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516 ) 在 weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 在 weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 引起:java.lang.IllegalArgumentException: javax.faces.context.ExceptionHandlerFactory 在 javax。 com.sun 的 javax.faces.FactoryFinder.setFactory(FactoryFinder.java:264) 的 faces.FactoryFinder.validateFactoryName(FactoryFinder.java:578)。 faces.config.processor.FactoryConfigProcessor.setFactory(FactoryConfigProcessor.java:283) 在 com.sun.faces.config.processor.FactoryConfigProcessor.processFactories(FactoryConfigProcessor.java:239) 在 com.sun.faces.config.processor.FactoryConfigProcessor。在 com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:338) 在 com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:219) 在 weblogic.servlet 处理 (FactoryConfigProcessor.java:193) .internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481) 在 weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 在 weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) ) 在 weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181) 在 weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1801) 在 weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java: 3045 ) 在 weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1397) 在 weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:460) 在 weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver .java:425) 在 weblogic.application.internal.flow.weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) 在 weblogic.application.internal.flow 的 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)。 ScopedModuleDriver.start(ScopedModuleDriver.java:200) 在 weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247) 在 weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425) 在weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83) 在 weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) 在 weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow. java:27) 在 weblogic.application.interna l.BaseDeployment$2.next(BaseDeployment.java:1267) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83) 在 weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:409) 在 weblogic。 application.internal.EarDeployment.activate(EarDeployment.java:54) 在 weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161) 在 weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)在 weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569) 在 weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150) 在 weblogic.deploy.internal.targetserver .operations.ActivateOperation.doCommit(ActivateOperation.java:116) 在 weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323) 在 weblogic.deploy.internal.targetserver.DeploymentManager.handleDepl oymentCommit(DeploymentManager.java:844) 在 weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253) 在 weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440) 在 weblogic.deploy .internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:181) 在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access 100 美元(DeploymentReceiverCallbackDeliverer.java:12)在 weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:67) 在 weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516) 在 weblogic。 work.ExecuteThread.execute(ExecuteThread.java:201) 在 weblogic.work.ExecuteThread.run(ExecuteThrea d.java:173)
您能帮我们解决我们的错误或需要做什么吗..
提前谢谢..
【问题讨论】:
那么,在出现错误之前您做了哪些更改? 我添加了 jsf、impl 2.0 jars 并从我的应用程序中删除了 facelets.jar,将 web.xml 中的 servlet 版本更改为 2.5,并将 faces-config 中的 xsd def 版本更改为 2.0。我没有更改任何 bean,因为我正在使用 spring 来管理 bean。还有什么可以改变@LuiggiMendoza 这些是堆栈跟踪中唯一的消息,仅此而已吗? 我已经更新了日志 【参考方案1】:看看 Mkyong 的博文:
http://www.mkyong.com/jsf2/java-lang-illegalargumentexception-javax-faces-context-exceptionhandlerfactory/
事实上,您使用的是 Weblogic,而不是 Tomcat,但问题的原因可能是相同的:Weblogic 在javaee.jar
中选择了 JSF 1.2 API 而不是新的 JSF 2.0 API。从项目的类路径中删除该文件,而不是在您的服务器上清理项目,然后重新部署它。我希望这会有所帮助!
【讨论】:
以上是关于将 jsf 1.2 迁移到 2.0 时出错的主要内容,如果未能解决你的问题,请参考以下文章
<t:inputFileUpload> 将 JSF 1.2 迁移到 JSF 2.2 后不再工作
执行迁移 EF core 2.0 时出错,将身份 ID 从字符串更改为 int
从facelets 1.1迁移到faclets 2.0 - FaceletViewHandler