在Jboss 5.0上启动JSF应用程序出错



我是JSF新手,最近刚开始学习一个教程。我创建的应用程序完全按照教程中提供的信息创建。然而,当我启动服务器,我得到以下错误:

Exception sending context initialized event to listener instance of class org.jboss.web.jsf.integration.config.JBossJSFConfigureListener
java.lang.ClassCastException: com.sun.faces.config.WebConfiguration cannot be cast to com.sun.faces.config.WebConfiguration
    at com.sun.faces.config.WebConfiguration.getInstance(WebConfiguration.java:154)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:145)

web . xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>Hello, World</display-name>
    <description>Welcome to JavaServerFaces</description>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>
</web-app>

如教程中所示,我在Web-Inf/lib中添加了jsf-api和jsf-impl,但是在谷歌中搜索相同的内容,我发现jboss有自己的jsf版本,这可能会使我的应用程序受到多个jsf版本的污染。如果是这种情况,那么我该如何解决这个问题,或者如果我错了,那么错误背后的原因是什么?

只是为了补充,因为我相信这是jar文件冲突,我试图添加jboss从jboss-5.1.0.GAserverdefaultdeployjbossweb.sarjsf-libs导入的jar文件,仍然是徒劳的。

请帮。

处理冲突的更好方法是在web.xml中添加上下文参数,如下所述:

<context-param>
      <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
      <param-value>true</param-value>
</context-param>

查看:bundle JSF Inside Your WAR

我不知道您的Eclipse是如何配置的(Java EE/JBoss工具等)。但是你应该在你的webproject中添加一个服务器运行时:

  1. 添加服务器运行时

在Eclipse中打开Server视图

1.2上下文菜单,然后->新建服务器->选择JBoss 5.0 服务器类型

1.3服务器运行时环境-> add

1.4主目录->你的服务器的Home/default例如

  1. 现在改变你的webproject的构建路径

2.1。添加库->服务器运行时->选择新的运行时

没有JSF或其他库在你的耳朵或在你的web项目Web-Inf/lib

现在您已经拥有了所有的jboss -lib,包括在您的类路径中的jsf-lib——由Eclipse控制——并且您不必担心从服务器库设置jar等等。

我希望它有帮助。以类似的方式,我创建了一个测试项目

看起来像一个jar版本冲突

从应用程序中删除JSF依赖项:如果您正在使用maven构建项目,您可以将依赖范围设置为提供的

从JSF中移除依赖范围(如果您想使用您自己的jar)。考虑使用Jboss应用程序描述,并排除JSF依赖项。

我不知道JBoss 5的XML格式,所以发布JBoss 7

<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="com.sun.jsf-impl" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

应该是类似的

相关内容

  • 没有找到相关文章