将 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

将带有 Ajax4jsf 1.x 的 JSF 1.1 迁移到 JSF 2

JSF - 组件库,迁移还是不迁移?

将 JSF 托管 bean 迁移到 CDI 托管 bean