1

在使用 Jboss 4.2.3 在 Redhat 6 上部署我的项目时,我遇到了一些困难,所以我决定将它放在 stackoverflow 上,以便它可以帮助其他人。如果有人可以建议一个好的标题以便可以轻松搜索,请

问:如何让 Jboss 4.2.x 忽略旧的 JSF 库并在您的项目库中使用一个?

Q:如何让Jboss扫描特定路径进行WAR文件扫描?

问:如何将 Jboss 绑定到 IP 地址而不是 localhost?

Q:Jboss把爆炸WAR文件放在哪里?

问:Hibernate-annotations与 Jboss 4.2.3 注释冲突并抛出以下异常。

java.lang.ClassCastException: org.hibernate.validator.event.ValidateEventListener cannot be cast to org.hibernate.event.PreInsertEventListener 

问:如何JSF 2.0.x运行JBoss 4.0.xJSF 2.0至少支持Servlet 2.5 API,JBoss最多Tomcat 5.x支持。Servlet 2.4

问:如何更改动态 Web 项目的 Servlet 版本?

4

1 回答 1

0

Q:如何让Jboss扫描WAR文件扫描的特定路径?

  1. 打开$JBOSS_HOME/server/default/conf/jboss-service.xml
  2. 在以下标签中添加逗号后放置战争的路径。假设我的战争粘贴在/Oracle/my-web-apps

    <attribute name="URLs">
       deploy,/Oracle/my-web-apps <as many comma separated path for Jboss to scan war>
    </attribute>
    

问:如何将 Jboss 绑定到 IP 地址而不是 localhost?

将 JBOSS 与 ip 地址绑定,如果有 IP,则可以使用以下命令访问

sh /Jboss/bin/run.sh -b 0.0.0.0

Q: Jboss 把爆炸的WAR 文件放在哪里?

WAR将被炸毁,/Jboss/server/default/temp/deploy但请注意部署文件夹仅在您运行 Jboss 服务器时可见,因为当您停止 Jboss 服务器时,它会取消部署所有项目。

问:如何让 Jboss 4.2.x 忽略旧的 JSF 库并在您的项目库中使用一个?

为此,您无需在 JBoss 方面进行任何更改,而是在web.xml您自己的项目中进行更改。放上以下context-param并完成

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

链接:http ://docs.jboss.org/jbossas/6/JSF_Guide/en-US/html/

问:Hibernate-annotations与 Jboss 4.2.3 注释冲突并抛出以下异常。

/jboss-4.2.3.GA/server/default/lib复制并用你的jarhibernate-annotations.jar替换它。hibernate-annotations然后再次导出和部署项目。问题解决了。:-)

问:如何在 JBoss 4.0.x 上运行 JSF 2.0.x?由于 JSF 2.0 至少支持 Servlet 2.5 API,而 JBoss 有 Tomcat 5.x,最多可以支持 Servlet 2.4。

如果您没有使用 Servlet 3.0 的任何高级功能(如异步支持等),则 EL 标记只是有所不同。请按照以下步骤操作,您可以在 Jboss 4.x 上运行 JSF 2.0

链接到这个问题的原始答案 --> https://stackoverflow.com/a/5998625/185022

JSF 2.0 严重依赖EL 2.1,它是 Servlet 2.5 的一部分,与EL 2.0相比,它是 Servlet 2.4 的一部分,这是一个重大变化,但它不依赖于任何特定的 Servlet 2.5 特定 API。Servlet 2.4 应该也能正常工作。所以理论上,如果您提供自己的 EL 2.1 API 和/WEB-INF/lib. 我在 Tomcat 5.5.33 上使用以下库进行了快速测试/WEB-INF/lib

  • el-api.jar从Tomcat 6.0.xlib文件夹复制的文件
  • jboss-el.jar文件(实现 EL 2.1 并支持 EL 2.2 类似带参数的方法调用)
  • jsf-api.jarjsf-impl.jar从Mojarra 2.0.x

web.xml还有一个声明了 JBoss EL的 Servlet 2.4 :

<context-param>     
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>   
</context-param>
    <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener> 
<context-param>
    <param-name>com.sun.faces.validateXML</param-name>
    <param-value>false</param-value>

一个简单的 JSF 2.0 Facelet(不是 JSP!),带有一个简单<h:form>的按钮<f:ajax>和一个简单@ViewScoped @ManagedBean的在 Tomcat 5.5.33 上适用于我。在您的 JBoss 4.0.5 上试一试并彻底测试。

请注意,您至少需要 JDK 1.5,而不是 JDK 1.4。另请注意,由于存在 Servlet 2.5 特定el-api.jar文件,因此您的应用程序无法移植到任何 Servlet 3.0 容器。

问:如何更改动态 Web 项目的 Servlet 版本?

在 Eclipse 中,右键单击一个项目并转到属性,然后单击 Project Facet,如下图所示,如果它允许您进行更改,那么它很好,否则有一个黑客可以做到这一点。 面临的项目

如果 Eclipse 不允许您这样做,请转到并更改to$ProjectWorkSpace/.settings/org.eclipse.wst.common.project.facet.core.xml的值,并且不要忘记在您的 Servlet 2.4 中更改 XML Schema,如下所示facet="jst.web"2.4Web.xml

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
                             http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
于 2013-10-23T06:42:22.163 回答