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属性
  
         deploy/,file:/data/webapps/simple-web/current,file:/data/webapps/complex-web/current
  

   在simple-web/current目录下分别解压缩simple-web.war包到simple-web.war目录下,即simple-web/current/simple-web.war目录,后者类似,在各自目录下的WEB-INF下创建jboss-web.xml文件,内容如下
  
     PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN"

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

            /
           
            www.janson.com
           
      

    这样就可以在一台机器上将多个项目配置成不同域名下的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.  
   2.       Allows the override of the suffix order declared by subdeployers, using the syntax [order:]suffix 
   3.      
 
   4.       EnhancedSuffixOrder 
   5.       [Ljava.lang.String; 
   6.        
  17.        
  18.           
  19.      
 
  20.   
 
  

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

9.
引用

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

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

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

      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)));
}
}

你可能感兴趣的:(JBoss,Web,XML,AOP,SUN)