1. 单台Linux服务器中如何部署多个独立应用,即多个应用不能run在一个jboss实例中?
    换言之,这个问题也可以这样描述:在单台Linux服务器中服务启动多个Jboss实例?
    默认情况下,jboss启动时加载server/default/目录下的配置,要实现多个实例的启动,主要是解决端口冲突的问题,因为一套端口只能被一个应用占有;
    一般来说,我们可以在Jboss启动时通过-Djboss.server.home设置当前实例启动时加载不同的目录来实现;
    比如Jboss主程序安装在/usr/xx/jboss/,应用放在/home/admin/app/;那此时就可以cp一份default目录到当前应用app目录下,通过-Djboss.server.home=/home/admin/app/default来启动该实例;
    若直接在/usr/xx/jboss/server/下复制default目录并改名为yy,则可以用更简单的参数-c yy来启动; 
    对于多应用的情况,我们仍然要解决端口冲突的问题,有两种方式:
    其一,直接修改各应用对应的default目录下的所有配置端口,主要涉及配置文件conf/jboss-service.xml、tomcat下的server.xml;该方法比较土,很容易出错,因为端口众多,只要有一项端口没有改,jboss就将无法正常启动;若应用较少,比如就只有2个,那这种方式勉强可以用用;
    其二,在jboss-service.xml中启用jboss.system:service=ServiceBindingManager这个mbean服务,设置ServerName、StoreURL属性;将各套应用对应的端口全部配置在同一个文件中;推荐采用该方案,具体可参考:<mbean code="org.jboss.services.binding.ServiceBindingManager" name="jboss.system:service=ServiceBindingManager"> <attribute name="ServerName">ports-01</attribute> <attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute> <attribute name="StoreFactoryClassName"> org.jboss.services.binding.XMLServicesStoreFactory </attribute> </mbean>
  2. Jboss无法正常启动,报异常javax.management.MBeanRegistrationException: preRegister() failed?
    一般来说,上面的异常出现在4.2及其以后的版本中,比较详细的异常如下:javax.management.MBeanRegistrationException: preRegister() failed: [ObjectName='jboss.remoting:service=NetworkRegistry', Class=org.jboss.remoting.network.NetworkRegistry (org.jboss.remoting.network.NetworkRegistry@16b6c55)] at org.jboss.mx.server.registry.BasicMBeanRegistry.invokePreRegister(BasicMBeanRegistry.java:713) at org.jboss.mx.server.registry.BasicMBeanRegistry.registerMBean(BasicMBeanRegistry.java:211) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) ... 51 more Caused by: java.lang.RuntimeException: Exception creating identity: mall_dev4: mall_dev4 at org.jboss.remoting.ident.Identity.get(Identity.java:211) at org.jboss.remoting.network.NetworkRegistry.preRegister(NetworkRegistry.java:268) at org.jboss.mx.server.AbstractMBeanInvoker.invokePreRegister(AbstractMBeanInvoker.java:966) at org.jboss.mx.modelmbean.ModelMBeanInvoker.invokePreRegister(ModelMBeanInvoker.java:489) at org.jboss.mx.server.AbstractMBeanInvoker.preRegister(AbstractMBeanInvoker.java:654) at org.jboss.mx.server.registry.BasicMBeanRegistry.invokePreRegister(BasicMBeanRegistry.java:697) ... 56 more
    这主要是因为Jboss启动了一个jboss.remoting:service=NetworkRegistry的mbean服务,启动时却又无法根据当前hostname找到IP!
    解决方案为在/etc/hosts中绑定当前服务器的主机名和IP,比如10.2.224.214 mall_dev4; 
    对于4.2系列之前的版本,如果没有绑定主机名和IP,虽然会出现以下的异常,但并不一定会影响应用的正常启动;11:32:12,427 WARN [ServiceController] Problem starting service jboss:service=invoker,type=http java.net.UnknownHostException: mall_dev4: mall_dev4 at java.net.InetAddress.getLocalHost(InetAddress.java:1308) at org.jboss.invocation.http.server.HttpInvoker.checkInvokerURL(HttpInvoker.java:204) at org.jboss.invocation.http.server.HttpInvoker.startService(HttpInvoker.java:101) at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289) at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245) at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978) at $Proxy0.start(Unknown Source) at org.jboss.system.ServiceController.start(ServiceController.java:417)
  3. Jboss已经正常启动,但是无法用IP或者绑定IP访问应用?
    熟悉Linux相关知识的筒靴都知道一个端口是绑定在某个地址上的,可以是一个,也可以是多个,一个端口在同一个地址上不能被两个应用占有;
    出现这个问题一般是因为你使用的是4.2系列及其之后的版本,因为从这个系列开始,Jboss默认绑定的端口由之前的0.0.0.0变成了127.0.0.1;前者表示绑定当前服务器下所有地址,包括自身的IP、127.0.0.1;而后者只绑定了127.0.0.1,而没有绑定本机IP,通过IP去访问应用自然也就无法成功了,因为访问的IP地址没有开放对应的端口;
    对于默认的这种情况,一般来说jboss是要和apache搭配使用的,apache暴露应用外部访问的端口,然后apache再监听本地(也就是127.0.0.1)的端口;
    当然这个默认配置也是可以修改的,方式也比较多,比如:
    方式1,启动脚本中通过参数-b, --host=<host or ip>指定地址,比如-b 0.0.0.0就表示绑定所有地址;
    方式2,启动脚本中通过参数-Djboss.bind.address指定地址,比如-Djboss.bind.address=0.0.0.0;
    方式3,直接修改需要对外暴露的端口绑定地址,比如tomcat/server.xml中的http端口绑定address信息;
  4. Jboss正常启动,但是用shutdown脚本无法关闭应用?
    对于jboss的关闭,shutdown命令允许好几种方式的关闭,可以参考该命令的帮助:usage: shutdown [options] <operation> options: -h, --help Show this help message (default) -D<name>[=<value>] Set a system property -- Stop processing options -s, --server=<url> Specify the JNDI URL of the remote server -n, --serverName=<url> Specify the JMX name of the ServerImpl -a, --adapter=<name> Specify JNDI name of the MBeanServerConnection to use -u, --user=<name> Specify the username for authentication -p, --password=<name> Specify the password for authentication operations: -S, --shutdown Shutdown the server -e, --exit=<code> Force the VM to exit with a status code -H, --halt=<code> Force the VM to halt with a status code 一般来说,我们使用-s参数来关闭,也即通过JNDI URL;
    若是基于JNDI URL的方式出现这种情况一般有三种可能:
    其一,当前应用所使用的default目录内的内容与当前运行jboss自身的default内容不一致,比如当前jboss版本为4.0.5,而启动时指定的default却是从jboss 4.2.1中cp过来的;这种情况在搭建环境时经常出现,因为一般直接从另外一台linux服务器中scp过来,但其实两台服务器自身安装的jboss版本不一致;
    其二,shutdown命令中指定的JNDI端口与实际应用启动的JNDI端口不一致
    其三,/etc/hosts中对当前主机名绑定的IP地址不正确,比如当前服务器实际的IP地址为10.2.224.214,而hosts中绑定的却是10.0.0.1;
    总之,出现此类情况都是因为jboss自身无法正确接收到正确的关闭命令所致,一般来说在jboss的server.log中会抛如下的异常信息:
    Exception in thread "main" javax.naming.CommunicationException [Root exception is java.rmi.ConnectException: Connection refused to host: 10.0.0.1; nested exception is: java.net.ConnectException: Connection timed out] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:707) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572) at javax.naming.InitialContext.lookup(InitialContext.java:351) at org.jboss.Shutdown.main(Shutdown.java:202) Caused by: java.rmi.ConnectException: Connection refused to host: 10.0.0.1; nested exception is: java.net.ConnectException: Connection timed out at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:574) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:94) at org.jnp.server.NamingServer_Stub.lookup(Unknown Source) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:610) ... 3 more
  5. 如何对Linux下的Jboss应用进行debug?
    其实这个问题和Jboss是否部署在Linux下没有直接关系,可以在jboss启动时指定远程debug端口即可,比如:
    -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n
    然后在eclipse中新建remote debug时指定对应的端口即可;

网店版重生系列:Linux下Jboss启动、关闭、端口配置等常见问题FAQ相关推荐

  1. 网店版重生系列:多数据源单sqlMapClient导致NullPointerException问题跟踪

    从前面的<网店版重生系列:都是Spring配置中自动注入惹的祸>中我们可以看出一些有关datasource.sqlMapClientTemplate.sqlMapClient的相关配置信息 ...

  2. 网店版重生系列:因为webwork.configuration.xml.reload遭遇Web应用性能测试瓶颈

    网店版重生项目中,因为我们要将最主要的核心数据由Oracle迁移到分布式Mysql中:虽然说业务逻辑不进行任何改动,只是将数据源由单一的Oracle改造成基于Mysql的动态数据源,但为了保险起见,我 ...

  3. 网店版重生系列:回头看Jboss配置项CatchSystemOut、Java2ClassLoadingCompliance、UseJBossWebLoader

    最近一直忙于做一个纯技术驱动的项目:网店重生!就是要把网店版改造成为基于Mysql的分布式应用:由于在过去的1年半的时间里面,网店版都没有怎么发展,只是一些例行维护:此次要这么大规模重构的确是一个不小 ...

  4. 网店版重生系列:都是Spring配置中自动注入惹的祸

    在对Spring Container管理的bean进行配置时,有一个很好用的功能就是自动注入,可以根据不同规则对bean所依赖的bean进行自动set,相信最常用的就是设置default-autowi ...

  5. linux jboss的安装路径,LINUX下JBOSS的安装及配置

    环境:Linux AS5 Update3 JBOSS: 下载 jboss-5.1.0.GA.tar.gz(或者其他版本,本文以jboss-5.1.0.GA举例) JDK: 下载:jdk-6u17-li ...

  6. linux 启动网络服务,Linux下网络启动服务器安装和配置方法(pxe+tftp+dhcpd)

    背景: 在大规模安装服务器时,需要批量自动化方法来安装服务器,来减少日常的工作量,但是批量自动化安装服务器的基础是网络启动服务器(bootserver),下面就是网络启动服务器的安装和配置方法,供大家 ...

  7. linux停止tomcat命令,Linux下Tomcat启动关闭命令

    1.首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 2.查看Tomcat是否以关闭 ps -ef|grep tomcat 如果显示以下信息,说明Tomcat还没 ...

  8. linux下oracle启动关闭

    1.以oracle身份登录数据库,命令:su – oracle 2.执行以下命令查看数据库监听器的状况: lsnrctl status 3.执行以下命令停止数据库监听器运行: lsnrctl stop ...

  9. Linux操作Oracle(1)——Linux下 Weblogic启动关闭方法

    方法1:使用脚本执行 进入wls安装目录中,使用脚本命令启动 关闭 运行.sh脚本文件,命令格式: ./startWeblogic.sh 方法2:使用命令ps -ef | grep 'weblogic ...

最新文章

  1. node项目部署到服务器报错,记一次部署node项目到centos服务器经历
  2. utf8编码中文还是乱码_zend studio 乱码
  3. 人生苦短,我用python+vscode
  4. 如果测试你的MongoDB应用升级?
  5. matlab 与数据库操作
  6. XCode5添加新建类模板(Cocos2dx Template Class for Scene or Layer)
  7. mysql 初始化_MySQL安装与初始化
  8. SpringMVC 自定义转换器
  9. 【Fortran】CUDA+PGI Fortran安装教程
  10. Java 替换word文档文字
  11. 线性回归之最小二乘法(高斯-马尔可夫定理)
  12. 【校招VIP】考研二战长时间没工作,面试被问为什么有职场空窗期?你应该这样回答
  13. 2 最长上升子序列及其衍生
  14. win10 虚拟桌面 快捷键
  15. wechat微信小程序 :对应的服务器证书无效
  16. 正在更新office,请稍后 然后报错 解决办法
  17. python测试用例发送邮件用谷歌浏览器的方式
  18. 快手如何搭建一个好的数据指标体系?
  19. Python自动发短信给自己手机
  20. ssm java编程遇到从数据库中查询的时间与存储时间不一致

热门文章

  1. 喇叭自动化生产线点胶划线工艺
  2. 结对团队之1715|K班取经
  3. Mac 开发者快速上手指南!
  4. (附源码)计算机毕业设计SSM基于农产品交易系统
  5. 全科信息管理系统方案/案列/APP/软件/小程序/网站
  6. 国内市场上的BI软件到底有啥区别?
  7. C语言1 lt lt 30,LT3045和LT3045-1恒定的输出噪声PSRR和负载调节
  8. 2D-X光图像重建3D-CT图像项目总结
  9. 抽烟打电话行为识别系统 yolo
  10. 教你用 JavaScript 设计一个 Neumorphism 风格的数字时钟 (代码详解)