Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 使用Mojarra 2.0.4问题将JBoss配置为7.1.1_Jsf 2_Jboss7.x_Mojarra - Fatal编程技术网

Jsf 2 使用Mojarra 2.0.4问题将JBoss配置为7.1.1

Jsf 2 使用Mojarra 2.0.4问题将JBoss配置为7.1.1,jsf-2,jboss7.x,mojarra,Jsf 2,Jboss7.x,Mojarra,我在JBoss AS 5.1.0 GA上有一个可用的webapp,它使用Mojarra 2.0.4 JAR。我正在将其迁移到JBoss AS 7.1.1上。此版本的JBoss随附2.1.7。因此,我通过为2.0.4定义插槽,并在META-INF/jboss部署结构.xml中将其与其他依赖项一起称为依赖项,从而降低了Mojara版本的级别 jboss部署结构.xml <?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-

我在JBoss AS 5.1.0 GA上有一个可用的webapp,它使用Mojarra 2.0.4 JAR。我正在将其迁移到JBoss AS 7.1.1上。此版本的JBoss随附2.1.7。因此,我通过为2.0.4定义插槽,并在
META-INF/jboss部署结构.xml
中将其与其他依赖项一起称为依赖项,从而降低了Mojara版本的级别

jboss部署结构.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
  <deployment>
    <exclusions>
          <module name="javax.faces.api" slot="main"/>
          <module name="com.sun.jsf-impl" slot="main"/>
          <module name="javax.faces.api" slot="1.2"/>
          <module name="com.sun.jsf-impl" slot="1.2"/>          
        </exclusions>
        <dependencies>
          <module name="org.hibernate.validator" export="true"/>
          <module name="javax.validation.api" export="true"/>
          <module name="com.google.gson" export="true"/>
          <module name="org.codehaus.jettison" export="true"/>
          <module name="org.jboss.resteasy.resteasy-jaxrs" export="true"/>
          <module name="org.jboss.resteasy.resteasy-jackson-provider" export="true"/>
          <module name="org.apache.log4j" export="true"/>
          <module name="org.jboss.as.web" slot="main" export="true"/>
          <module name="javax.faces.api" slot="2.0.4" export="true"/>
          <module name="com.sun.jsf-impl" slot="2.0.4" export="true"/>       
        </dependencies>
  </deployment>   
 </jboss-deployment-structure>
我引用了link并修改了我的依赖项,如下所示

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
  <deployment>
        <exclusions>
          <module name="javax.faces.api" slot="main"/>
          <module name="com.sun.jsf-impl" slot="main"/>
          <module name="javax.faces.api" slot="1.2"/>
          <module name="com.sun.jsf-impl" slot="1.2"/>
          <module name="org.jboss.as.web" slot="main" />
        </exclusions>
        <dependencies>
          <module name="org.hibernate.validator" export="true"/>
          <module name="javax.validation.api" export="true"/>
          <module name="com.google.gson" export="true"/>
          <module name="org.codehaus.jettison" export="true"/>
          <module name="org.jboss.resteasy.resteasy-jaxrs" export="true"/>
          <module name="org.jboss.resteasy.resteasy-jackson-provider" export="true"/>
          <module name="org.apache.log4j" export="true"/>
          <module name="org.jboss.as.web" slot="main" export="true"/>
          <module name="javax.faces.api" slot="2.0.4" export="true"/>
          <module name="com.sun.jsf-impl" slot="2.0.4" export="true"/>
          <module name="org.jboss.as.web" slot="main">
          <imports>
            <include path="/org/**" />
            <exclude path="/META-INF/**" />
          </imports>
          </module>
        </dependencies>
  </deployment>   
 </jboss-deployment-structure>
我(当然是通过谷歌搜索)认为,这种异常通常是由三个因素引起的

  • xhtml中使用的标记无效/未关闭(错误传播的异常)
  • 会话超时(错误传播的异常)
  • Tomcat中POST参数数量的限制
  • 不幸的是,前两个不是原因。我通过验证器运行了错误的xhtml页面,发现标记是有效的,会话也没有过期。我还在
    standalone.xml
    中将
    org.apache.tomcat.util.http.Parameters.MAX_COUNT
    增加到5000,以解决第三点。错误仍然存在

    我还尝试迁移到默认的捆绑Mojarra 2.7.1版本。这阻止了第一个运行时异常,但第二个仍然存在。 导致此错误的那些页面唯一奇怪的地方是它们有ajax调用。 有趣的是,应用程序在AS 5.1.0 GA上运行良好,因此如果我的标记有误,那么在5.1.0上也会给我带来困难,但事实并非如此。因此,不太可能出现无效标记。 非常感谢任何指点

    UPDATE:刚刚发现
    PartialViewContextImpl.java:431
    中的那行代码显示
    ctx.getRenderKit()
    的计算结果为
    null
    。不知道为什么


    UPDATE2:事实证明,只有在表单中使用纯html输入组件(如
    等)时,问题才会出现。如果从
    中删除这些组件,或者将它们转换为相应的JSF标记,则效果良好。某处出了严重的问题。我无法确定这是由jboss、Mojarra还是我的应用程序引起的。我用一个普通的JSF应用程序尝试了它,无论我是否使用html输入标记,它都没有错误。因此,是我的应用程序和JBoss7.x的结合导致了这种情况。有什么想法吗?

    最后!据报道,该问题与Mojarra 2.1.7中的一个bug有关


    解决方案是为
    中包含的每个纯html组件提供一个名称属性。我无法理解的是,这个bug似乎与Mojarra 2.1.7有关。我为我的应用程序配置的JAR是2.0.4版本,但还是看到了错误。

    两个异常都有相同的根本原因:根本没有
    UIViewRoot
    。假设它只在POST上发生,从会话恢复视图显然失败了。我不确定,但从理论上讲,特定的JBoss7实例可能有一个不同的会话管理机制来序列化会话。是否所有视图范围的bean都实现了可序列化的
    ?尝试将状态保存方法设置为
    client
    进行测试,它应该在日志中为未实现可序列化但应实现可序列化的类生成警告。@BalusC:Hmmm。。是的,我的视图范围bean实现了可序列化的
    。我还尝试将状态保存方法设置为
    client
    。我现在又试了一次,但没有解决它@BalusC:我在
    web.xml
    中设置了许多上下文参数,这些参数可能相互冲突。。?请看一看
    com.sun.faces.numberOfViewsInSession
    非常低,只有1。默认值为15。但是,只有当最终用户在多个浏览器选项卡中打开同一页时,才会出现问题。值为1时,以前打开的任何选项卡中的同一页都会立即过期。@BalusC:我保留的页面太少,因为整个应用程序只有两个页面可导航。所以我只需要将上一页的状态保存在内存中。还是太低了吗?这会破坏景观恢复吗?很有趣。问题以“只使用名称属性”作为解决方案解决了。我不知道它是否真的不应该被修好。在我的例子中,我真的不需要name属性!我添加它只是为了让它工作。此外,我使用jQuery插件(我的和第三方的)在客户端生成输入和选择元素。现在,我必须确保即使他们有一个名称属性-_-
    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
      <deployment>
            <exclusions>
              <module name="javax.faces.api" slot="main"/>
              <module name="com.sun.jsf-impl" slot="main"/>
              <module name="javax.faces.api" slot="1.2"/>
              <module name="com.sun.jsf-impl" slot="1.2"/>
              <module name="org.jboss.as.web" slot="main" />
            </exclusions>
            <dependencies>
              <module name="org.hibernate.validator" export="true"/>
              <module name="javax.validation.api" export="true"/>
              <module name="com.google.gson" export="true"/>
              <module name="org.codehaus.jettison" export="true"/>
              <module name="org.jboss.resteasy.resteasy-jaxrs" export="true"/>
              <module name="org.jboss.resteasy.resteasy-jackson-provider" export="true"/>
              <module name="org.apache.log4j" export="true"/>
              <module name="org.jboss.as.web" slot="main" export="true"/>
              <module name="javax.faces.api" slot="2.0.4" export="true"/>
              <module name="com.sun.jsf-impl" slot="2.0.4" export="true"/>
              <module name="org.jboss.as.web" slot="main">
              <imports>
                <include path="/org/**" />
                <exclude path="/META-INF/**" />
              </imports>
              </module>
            </dependencies>
      </deployment>   
     </jboss-deployment-structure>
    
    12:59:19,434 ERROR [stderr] (http--0.0.0.0-8080-4) java.lang.IllegalArgumentException: null source
    12:59:19,435 ERROR [stderr] (http--0.0.0.0-8080-4)  at java.util.EventObject.<init>(EventObject.java:38)
    12:59:19,436 ERROR [stderr] (http--0.0.0.0-8080-4)  at javax.faces.event.SystemEvent.<init>(SystemEvent.java:71)
    12:59:19,444 ERROR [stderr] (http--0.0.0.0-8080-4)  at javax.faces.event.ComponentSystemEvent.<init>(ComponentSystemEvent.java:73)
    
    12:59:19,489 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/].[Faces Servlet]] (http--0.0.0.0-8080-4) Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException
        at com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:431) [jsf-impl.jar:2.0.4-b09]
        at com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:72) [jsf-impl.jar:2.0.4-b09]
        at com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:559) [jsf-impl.jar:2.0.4-b09]