在使用Jboss 4.2.3在Redhat 6上部署我的项目时遇到了以下困难,所以我决定将它放在stackoverflow上以便它可以帮助其他人。如果有人可以建议一个好的标题,以便它可以很容易地被搜索,请
问:如何让Jboss 4.2.x忽略旧的JSF库并在项目库中使用它?问:如何让Jboss扫描WAR
文件扫描的特定路径?
问:如何将Jboss与IP地址绑定,而不是localhost?
问: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.x
?由于JSF 2.0
支持至少Servlet 2.5 API
而JBoss的Tomcat 5.x
支持最多Servlet 2.4
问:如何更改动态Web项目的Servlet版本?
答案 0 :(得分:0)
问:如何让Jboss扫描WAR文件扫描的特定路径?
$JBOSS_HOME/server/default/conf/jboss-service.xml
在以下标记中添加逗号之后的战争路径。假设我的战争被粘贴在/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?
使用ip地址绑定JBOSS,以便您可以使用以下命令
访问IPsh /Jboss/bin/run.sh -b 0.0.0.0
问: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
并复制hibernate-annotations.jar
并将其替换为hibernate-annotations
jar。然后再次导出和部署项目。问题解决了。 : - )
问:如何在JBoss 4.0.x上运行JSF 2.0.x?由于JSF 2.0至少支持Servlet 2.5 API,而JBoss的Tomcat 5.x最多可以支持Servlet 2.4。
EL标签只有不同之处在于您没有使用Servlet 3.0的任何高级功能,如异步支持等。请按照以下步骤操作,您可以在Jboss 4.x上运行JSF 2.0
链接到此问题的原始答案 - &gt; https://stackoverflow.com/a/5998625/185022
JSF 2.0在很大程度上依赖于EL 2.1,它是Servlet 2.5的一部分,并且是一个重大变化,而不是作为Servlet 2.4的一部分的EL 2.0,但它不依赖于任何特定的Servlet 2.5特定API。 Servlet 2.4应该可以正常工作。所以理论上,如果你在/WEB-INF/lib
中提供自己的EL 2.1 API和实现,你可以让JSF 2.0在Servlet 2.4上运行。我在Tomcat 5.5.33上做了一个快速测试,在/WEB-INF/lib
中有以下库:
el-api.jar
文件已从Tomcat 6.0.x lib
文件夹中复制
jboss-el.jar
文件(实现EL 2.1并支持EL 2.2,如带参数的方法调用)jsf-api.jar
和jsf-impl.jar
声明JBoss EL的Servlet 2.4 web.xml
:
<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,如下图所示,如果它允许您更改那么它很好,否则有一个hack来执行它。
如果Eclipse不允许您这样做,那么转到$ProjectWorkSpace/.settings/org.eclipse.wst.common.project.facet.core.xml
并将facet="jst.web"
的值更改为2.4
,同时不要忘记更改Servlet 2.4的XML Schema在您的Web.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">