`

JBoss配置---收集中...

阅读更多
1. jboss6中修改http web port,$JBOSS_HOME/server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml
2. 开启远程调试端口JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"
3. 开启jmx服务,使用jconsole进行远程监控及热修改
   CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8849 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.20.136.203"
4. 关于产品级别的JVM参数参考
JAVA_OPTS="$JAVA_OPTS -server -Xms3G -Xmx3G -Xss256k -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseParallelOldGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/dump -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/usr/dump/heap_trace.txt -XX:NewSize=1G -XX:MaxNewSize=1G"
5. 配置多root
   在jboss-service.xml中配置URLDeploymentScanner Mbean,修改URLs属性
   <attribute name="URLs">
         deploy/,file:/data/webapps/simple-web/current,file:/data/webapps/complex-web/current
   </attribute>
   在simple-web/current目录下分别解压缩simple-web.war包到simple-web.war目录下,即simple-web/current/simple-web.war目录,后者类似,在各自目录下的WEB-INF下创建jboss-web.xml文件,内容如下
   <!DOCTYPE jboss-web

     PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN"

     "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd">
       <jboss-web>

            <context-root>/</context-root>
            <!-- 另外一个项目配置另一域名 -->
            <virtual-host>www.janson.com</virtual-host>
           
       </jboss-web>
    这样就可以在一台机器上将多个项目配置成不同域名下的root路径

6. 两个JBoss 实例再一台机器上启动的端口配置
   refer to: http://wwtyler.iteye.com/blog/210234
      经验证主要有以下几个地方需要改动,用来避免启动时的地址已经被绑定的异常。

      环境:JBoss 4.2.2GA,JDK 1.5

      1.   $JBoss_home/server/default/deploy/ejb3.deployer/META-INF/jboss-service.xml
           修改3873端口的值;
      2.   $JBoss_home/server/default/deploy/jboss-web.deployer/server.xml
           修改8080,8009,8443端口值。
      3.   $JBoss_home/server/default/conf/jboss-service.xml
           修改8083,1098,1099,4444,4445,4446端口值
      4.   $JBoss_home/server/default/conf/jboss-minimal.xml
           修改1099端口值,与3中保持一致。
      5.   $JBoss_home/server/default/deploy/jms/uil2-service.xml
           修改8093端口值。
7. JBoss启动时加载应用程序的顺序
   refer to: http://tanyankai.iteye.com/blog/569627
  
引用

   1. 以下说到的版本是jboss-4.2.3.GA 
   2.  
   3. 并且假设JBoss安装在D:\Java\jboss-4.2.3.GA 
   4.  
   5. JBoss部署的时候支持很多种格式打的包,比如说我们从deploy目录下面会看到有后缀名为deployer、sar,war,rar,xml ... (后来发现其实JBoss部署支持的格式,远远不止这些) 
   6.  
   7. 但是这些不同格式的应用是怎样的一个加载顺序呢?或者说有没有什么规律?带着这个疑问我在Jboss启动的时候仔细的看了一下命令行中的信息,发现两个信息: 
   8.  
   9. 1、  最先加载的是后缀名为deployer目录下应用或者服务; 
  10.  
  11. 2、  每次都会等有相同后缀名的应用(或者目录下的应用)完全加载完之后才会去加载另外一种后缀名 
  12.  
  13. 发现这两点之后,我就找了一下Jboss的一些配置文件,原来在D:\Java\jboss-4.2.3.GA\server\default\conf \xmdesc org.jboss.deployment.MainDeployer-xmbean.xml文件里面有这么一段内容: 
  

  
引用

   1. <attribute access='read-write' setMethod='setEnhancedSuffixOrder' getMethod='getEnhancedSuffixOrder'> 
   2.       <description>Allows the override of the suffix order declared by subdeployers, using the syntax [order:]suffix 
   3.       </description> 
   4.       <name>EnhancedSuffixOrder</name> 
   5.       <type>[Ljava.lang.String;</type> 
   6.       <!-- 
   7.          Statically set one or more enhanced suffix orders, independent of the value proposed by subdeployers. 
   8.          Some deployers may also allow the suffixes/orders to be set locally, so that's preferable too. 
   9.          For reference, this is the list of enhanced suffixes likely to be set by deployers (it may not 
  10.          be completely up-to-date, or there can be user-defined deployers). 
  11.           
  12.          050:.deployer,050:-deployer.xml,100:.aop,100:-aop.xml,150:.sar,150:-service.xml,200:.  ,250:.rar,300:-ds.xml,350:.har,400:.jar,400:.ejb3,400:.par,500:.war,600:.wsr,650:.ear,700:.jar,750:.zip,800:.bsh,900:.last 
  13.           
  14.          Until we resolve some startup issues, we'll setup some static enhanced suffix orders bellow 
  15.          and leave the rest of the suffixes contributed dynamically by registering deployers. 
  16.       --> 
  17.       <descriptors> 
  18.          <value value="250:.rar,300:-ds.xml,400:.jar,500:.war,550:.jse,650:.ear,800:.bsh"/> 
  19.       </descriptors> 
  20.    </attribute> 
  

8. Jboss后台运行
   nohup ./run.sh -b 0.0.0.0 >/dev/null &

9.
引用

  首先如果仅仅是想改变部署是加载war包的先后顺序,只需设置jboss-server.xml 里面的<attribute name="URLComparator">org.jboss.deployment.scanner.PrefixDeploymentSorter</attribute>,然后修改war包的名称,在最前面增加一个数字,如 100work.war,这时JBOSS会根据这个数字的顺序进行加载。具体请参考PrefixDeploymentSorter的getPrefixValue方法源代码。部署时会自动忽略前面的数字,不会影响ctxPath。

如果需要完全自定义的加载顺序,而且不想改包的名称,那就重新实现一个URLComparator吧。

JBOSS 加载 应用依赖jboss-server.xml 里的下面mbean实现。

<mbean code="org.jboss.deployment.scanner.URLDeploymentScanner"
      name="jboss.deployment:type=DeploymentScanner,flavor=URL">

其中URLComparator属性决定排序,所以要从这个地方入手。重新实现一个。

如果需要获取Jboss的配置信息可以从 org.jboss.system.server.ServerConfigLocator获取。

还有个问题,如果要让自己写的类能加载,还需要修改启动参数:

set JAVA_OPTS=%JAVA_OPTS% -Djboss.boot.library.list=log4j-boot.jar,jboss-common.jar,jboss-system.jar,jboss-xml-binding.jar,namespace.jar,xxx.jar

在原来几个jar包基础上增加自己的xxx.jar。

参考资料:

http://doc.javanb.com/jboss-4-0-1-sp1-system-api/org/jboss/deployment/package-tree.html

http://onecan.iteye.com/blog/83145

下面贴出代码,这个类比较有意思,没有用简单的继承重写DeploymentSorter,而是使用装饰模式,思路清晰,一目了然。

package org.jboss.deployment.scanner;

import java.net.URL;
import java.util.Comparator;
import org.jboss.deployment.DefaultDeploymentSorter;
import org.jboss.deployment.DeploymentSorter;

public class PrefixDeploymentSorter
implements Comparator, DefaultDeploymentSorter
{
private DeploymentSorter sorter;

public PrefixDeploymentSorter()
{
    this.sorter = new DeploymentSorter();
}

public String[] getSuffixOrder() {
    return this.sorter.getSuffixOrder();
}

public void setSuffixOrder(String[] suffixOrder)
{
    this.sorter.setSuffixOrder(suffixOrder);
}

public int compare(Object o1, Object o2)
{
    int comp = getPrefixValue((URL)o1) - getPrefixValue((URL)o2);

    return ((comp == 0) ? this.sorter.compare(o1, o2) : comp);
}

private int getPrefixValue(URL url)
{
    String path = url.getPath();
    int nameEnd = path.length() - 1;
    if (nameEnd <= 0) {
      return 0;
    }

    if (path.charAt(nameEnd) == '/') {
      --nameEnd;
    }

    int nameStart = path.lastIndexOf(47, nameEnd) + 1;

    int prefixEnd = nameStart;
    while ((prefixEnd <= nameEnd) && (Character.isDigit(path.charAt(prefixEnd)))) {
      ++prefixEnd;
    }

    if (prefixEnd == nameStart) {
      return -1;
    }

    while ((nameStart < prefixEnd) && (path.charAt(nameStart) == '0')) {
      ++nameStart;
    }

    return ((nameStart == prefixEnd) ? 0 : Integer.parseInt(path.substring(nameStart, prefixEnd)));
}
}
分享到:
评论
1 楼 zhuxinhua 2010-08-03  
谢谢,,这东西真不容易找啊。。

相关推荐

    JBoss安装配置[收集].pdf

    JBoss安装配置[收集].pdf

    Jboss集群配置

    Jboss集群配置,从网上搜集的参考文档,准备搞个Jboss集群, Tomcat的搞定了

    jboss安装和配置[收集].pdf

    jboss安装和配置[收集].pdf

    JBossESB学习笔记(1-16全)

    JBossESB学习笔记 收集了网上1-16系列教程,笔记详细介绍了JBossESB各个组件的特性及配置文件的说明

    windows jboss cluster

    windows jboss cluster,网络上收集的一些配置信息,共同参考!

    Jetty中文手册

    在JBoss中配置Jetty Remote Glassfish EJBs from Jetty Jetty and Spring EJB3 (Pitchfork) JBoss EJB3 ObjectWeb EasyBeans (aka JOnAS EJB3Container) 集群技术 JBoss Infinispan (from Redhat) Gigaspaces ...

    java开源包10

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    JBoss启动与运行过程的研究

    本人自己收集整理资料,如有错误之处,请谅解。 第1章 JBoss 介绍 2 第2章 JBoss启动步骤 11...第3章 JBoss启动过程中需要调用配置文件及含义 14 第4章 JBoss运行过程分析 18 第5章 JBoss运行过程中输出信息及含义 29

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包101

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包3

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包6

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包5

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包4

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包7

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包9

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    Java资源包01

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

Global site tag (gtag.js) - Google Analytics