`
rocye
  • 浏览: 120205 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

初识JBoss5.1相关配置

    博客分类:
  • J2EE
阅读更多

       从事J2EE开发已经有些年了,一直在J2EE轻量级企业架构上奔跑。Struts+Spring+Ibatis/Hibernate 的组合确实有相当强的威力,随着这一组合在实际项目中运用的次数越来越多,不停的对它们进行优化后,发现已经到了需要更进一步的时候,Apache+Tomcat的强大勿用置疑,但毕竟它们的容量都偏“轻量级”。为此我走进了JBoss+EJB,本文将对初识JBoss5.1过程中所碰到的问题及解决的办法做一个记录。

      基本的什么下载安装,需要的JDK环境这里不做说明,你懂的!本人下载的是 jboss-5.1.0.GA 。新建一个Web项目(MyEclipse6.5)本人命名为 JsfTest 。习惯 tomcat 下配置虚拟目录的做法,于是找到两种配置方法(以下是来源于万能的baidu):

1. 编辑  jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\server.xml 文件,在</Host>之前增加:

<Context path="/jsft" docBase="D:/projects/JsfTest/web" debug="0" crosscontext="true" reloadable="false"></Context>

相信大家都知道,这样配置后是不用在 Manage Deployments 中进行发布了。启动 Jboss,花掉了启动同等空项目下tomcat所需时间的N倍后(只能说Jboss比tomcat容积大,加载的内容多,我是这样接受的),我碰到了第一个错误如下:

 

10:25:06,734 ERROR [AbstractKernelController] Error installing to Start: name=WebServer state=Create
org.jboss.xb.binding.JBossXBException: Failed to parse source: Context cannot appear in this position. Expected content of Host is unordered_sequence: Listener* Valve* Alias* Realm? attributes?
 at org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:203)
 at org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:183)
 at org.jboss.xb.binding.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:133)
 at org.jboss.web.tomcat.service.deployers.TomcatService.startService(TomcatService.java:167)
 at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:376)
 at org.jboss.system.ServiceMBeanSupport.pojoStart(ServiceMBeanSupport.java:216)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)

....

按提示内容是说 unordered_sequence 表示配置文件结点 顺序不对,或少了结点,最终这个问题试过很多次没有解决。

 

2. 如何在JBOSS5.1下建立虚拟路径:1:找到JBOSS的 \jboss-5.1.0.GA\server\default\conf\bootstrap目录下,有个叫profile.xml.在里边找到
<bean name="BootstrapProfileFactory" class="org.jboss.system.server.profileservice.repository.StaticProfileFactory">
      <property name="bindingsURI">${jboss.server.home.url}conf/bindingservice.beans</property>
      <property name="bootstrapURI">${jboss.server.home.url}conf/jboss-service.xml</property>
<property name="deployersURI">${jboss.server.home.url}deployers</property>
<property name="applicationURIs">
<list elementClass="java.net.URI">
<value>${jboss.server.home.url}deploy</value>
<value>file://D:/GBFILE</value>
</list>
</property>
<property name="attachmentStoreRoot">${jboss.server.data.dir}/attachments</property>
<property name="profileFactory"><inject bean="ProfileFactory" /></property>
</bean>

其中:<value>${jboss.server.home.url}deploy</value>
     <value>file://D:/GBFILE</value>
file://D:/GBFILE就是虚拟路径.但是该文件夹下面的文件夹必须以.war命名.
这样在远程访问的时候就可以根据http://ip:port/GBFILE下面的文件夹名称(不包含.war)就可以直接访问了.

 

第二种方法很显然,不是我想要的,因为本人一般为项目WebRoot更名为web,为了直接指向此目录而要加.war,肯定不会这样做。如果不加会报这样的错(我是这样加的<value>file://D:/projects/JsfTest/web</value>):

 

10:37:23,250 ERROR [StandardContext] Error starting static Resources
java.lang.IllegalArgumentException: Document base D:\projects\JsfTest\web\WEB-INF\web.xml does not exist or is not a readable directory
 at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:148)
 at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4021)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4188)
 at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)
 at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
 at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
 at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
 at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
 at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
 at $Proxy38.start(Unknown Source)
......

 

显然这个路径是存在的,但是它就是报 does not exist or is not a readable directory。

 

OK,以上两种方式我都没找到我想要的结果,没办法,打算从基本做法进行发布,于是打开 Manage Deployments 进行发布,将这个空的项目发布到 JBoss 的 deploy 目录。我想这样不会有问题了吧,这可是最基本的做法。启动JBoss:

 

10:42:01,703 ERROR [[/JsfTest]] Exception sending context initialized event to listener instance of class org.jboss.web.jsf.integration.config.JBossJSFConfigureListener
com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
 at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:213)
 at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:196)
 at org.jboss.web.jsf.integration.config.JBossJSFConfigureListener.contextInitialized(JBossJSFConfigureListener.java:60)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3910)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4393)
 at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)
 at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
 at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
 at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
 at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
 at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
 at $Proxy38.start(Unknown Source)

....

 

到这里就纳闷了,这也不行,OK,再baidu一下,得到一个关键字 jboss-web.xml  ,提到要在项目 WEB-INF 下面加入这样一个文件,在jboss自带发布的项目中也确实都能找到这个配置文件,于是我复制一个过来做了如下配置:

 

<!DOCTYPE jboss-web PUBLIC
   "-//JBoss//DTD Web Application 5.0//EN"
   "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
  
<jboss-web>
   <class-loading java2ClassLoadingCompliance="true">
        <loader-repository>
            com.asd:archive=JsfTest
            <loader-repository-config>java2ParentDelegation=true</loader-repository-config>
        </loader-repository>
    </class-loading>
</jboss-web>

 

启动成功: 正常访问 http://localhost:8080/JsfTest 就是那个最基本的页面了 This is my JSP page.
OK,算是第一步走通了,接着这个走,Baidu 一下这个关键字 JBoss 设置 根目录:在上面的 jboss-web.xml  中加一句 <context-root>/</context-root> 即:

 

<jboss-web>
   <class-loading java2ClassLoadingCompliance="true">
        <loader-repository>
            com.asd:archive=JsfTest
            <loader-repository-config>java2ParentDelegation=true</loader-repository-config>
        </loader-repository>
    </class-loading>
    <context-root>/</context-root>
</jboss-web>

 

再次启动JBoss(注:我的所有启动都是通过MyEclipse插件来完成的) 新的错误来了,步步维坚啊:

 

10:56:35,734 ERROR [AbstractKernelController] Error installing to Start: name=jboss.web.deployment:war=/ROOT state=Create mode=Manual requiredState=Installed
org.jboss.deployers.spi.DeploymentException: Web mapping already exists for deployment URL file:/E:/MyWebservers/jboss-5.1.0.GA/server/default/deploy/ROOT.war/
 at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:187)
 at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
 at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
 at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
 at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
 at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
 at $Proxy38.start(Unknown Source)

...

 

看得出好像是与 ROOT.war冲突了,异然删除这个文件夹,再次启动, 成功, 这样我就能访问我想要的地址了吧:

http://localhost:8080  OK 再次得到 This is my JSP page.

 

到这里,应该只能说勉强得到了我想要的结果,实质上还是没有达到我的意愿,对于网上普遍说的解决虚拟目录的配置方法,我想肯定也有依据可寻,只是暂时没找到关键错误点,下回再次分解我想要的配置方法,解决报错。

 

 

0
1
分享到:
评论

相关推荐

    JBOSS5.1安装配置说明

    JBOSS5.1安装配置说明 JBOSS 是一个基于 Java 的开源应用服务器,可以运行在 Windows、Linux、Unix 等多种操作系统平台上。为了在 Windows 下安装和配置 JBOSS,我们需要按照以下步骤进行操作。 安装 JAVA 环境 ...

    jboss5.1集群操作说明 apache2.2.4

    6. **配置文件**:在 JBoss 5.1 中,配置集群通常需要修改 `jboss-service.xml` 和 `jboss-web.xml` 文件。你需要添加集群相关的配置元素,例如指定集群名称、设置节点通信端口等。 7. **JNDI 查找**:在集群环境中...

    Jboss-5.1的集群搭建完整配置

    本文是作者精心写作的完整配置搭建Jboss-5.1集群的文档,只要按照步骤来做绝对不会出错,一些重要部分俺还加以标注和详细说明,呕心沥血的一大完整安装文档.

    ejb课程测试代码,eclipse+jboss5.1 ant编译等代码

    JBoss 5.1版本支持EJB 3.0规范,该规范简化了EJB的开发,减少了XML配置,增强了可编程性。 【Ant】是Apache的一个构建工具,类似于Make,但基于Java。它通过XML定义任务来自动化构建过程,包括编译、打包、测试和...

    替换两个文件解决Tomcat6项目移植到JBoss5.1下的Logging异常

    除了加入jboss-web.xml,删除xerces-2.6.2.jar和xml-apis.jar之外, &lt;!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web ...原因是旧版本的slf4j-api不包含以上方法,附件解压后覆盖jboss5.1GA/common/lib下的同名文件即可

    jboss drool5.1中文使用说明

    **JBoss Drools 5.1 中文使用说明** Drools 是一个开源的规则引擎,它提供了基于Java的业务规则管理系统(BRMS),帮助企业快速实施复杂的业务逻辑。本文档将详细阐述JBoss Drools 5.1版本的使用方法和特性。 ### ...

    JBoss7配置Mysql5.1数据源.pdf

    根据文件提供的信息,本文将详细介绍JBoss7配置Mysql5.1数据源的过程。 JBoss是一个开源的应用服务器,支持Java EE应用程序,而Mysql是一个广泛使用的开源关系数据库管理系统。在JBoss上配置Mysql数据源是一个常见...

    jboss配置入门,jboss的初级配置

    jboss的应用程序可以从官方网站下载,下载后解压到相关的目录即可。 jboss的配置调整 jboss的配置调整包括配置负载均衡、调整参数等。在这里,我们可以修改配置文件,以适应apache中的session sticky配置。 jboss...

    jboss-5.1.0.GA.zip

    jboss是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/...

    linux下jboss安装与配置

    Linux 下 JBoss 安装与配置 一、简介 JBoss 是一个运行 EJB 的 J2EE 应用服务器,是开放源代码的项目,遵循最新的 J2EE 规范。它提供了一个优秀的平台,用于学习和应用 J2EE 规范的最新技术。 二、系统环境 在 ...

    jboss与mysql的连接

    本文主要介绍如何配置JBoss应用服务器与MySQL数据库的连接,涉及的主要知识点包括: 1. **JDBC驱动**:为了使JBoss能够连接到MySQL,需要MySQL的JDBC驱动程序,这里是`mysql-connector-java-5.0.8-bin.jar`。这个...

    jboss7ejb配置文件

    在Java企业版(Java EE)应用开发中,EJB(Enterprise JavaBeans)是核心组件,用于构建可扩展、安全和事务处理的...如果你需要对特定配置进行深入理解,建议查阅官方文档或相关的技术论坛,以便获取更详细的信息。

    [JBoss] JBoss AS 7 配置部署管理教程 (英文版)

    [Packt Publishing] JBoss AS 7 配置部署管理教程 (英文版) [Packt Publishing] JBoss AS 7 Configuration, Deployment and Administration (E-Book) ☆ 出版信息:☆ [作者信息] Francesco Marchioni [出版机构...

    JBOSS旧版本(3~6)下载地址

    JBOSS旧版本(3~6)下载地址、JBOSS旧版本(3~6)下载地址、JBOSS旧版本(3~6)下载地址、JBOSS旧版本(3~6)下载地址

    Apache2.2+JBOSS 5 集群配置

    Apache2.2+JBOSS 5 集群配置主要涉及在Linux环境下构建高可用性和负载均衡的服务器集群,以提升应用服务的稳定性和处理能力。以下是详细的知识点: 1. **JBoss集群架构**: JBoss 集群可以采用两种架构:客户端...

    jboss-5.1.0.GA _01

    jboss-5.1.0.GA, 因为太大了,我分了两部分上传,这是第一部分,我把里面的service目录的内容放到第二部分了,下载的时候 记得我的上传目录找第二部分资源,然后解压到server目录 便可

    JBOSS 安装成 windows的服务

    通常,这个工具可以从JBoss的官方网站或者相关的开发社区下载获得。 2. **配置JBoss服务** 在开始安装前,需要配置JBoss的服务参数。这些参数通常包含JBoss的主目录、Java的执行路径、JVM参数等。打开命令行窗口,...

    jboss热部署配置

    JBoss是一款著名的开源Java应用...总之,JBoss的热部署配置涉及修改配置文件、选择合适的部署目录和类加载器策略,以及可能使用辅助工具。正确配置后,开发者可以高效地测试和调试应用程序,而不必频繁地重启服务器。

    windows环境下Jboss as 7配置Https

    Windows 环境下 JBoss AS 7 配置 HTTPS 在 Windows 环境下,配置 JBoss AS 7 的 HTTPS 需要按照特定的步骤进行。下面将详细介绍配置 HTTPS 的过程。 生成服务器端证书文件 首先,需要使用 JDK 自带的工具制作 ...

Global site tag (gtag.js) - Google Analytics