代码之家  ›  专栏  ›  技术社区  ›  Robert Christian

如何快速失效JBoss(ie)系统出口())在容器初始化期间将异常传播到服务器impl.doStart()

  •  1
  • Robert Christian  · 技术社区  · 14 年前

    具体来说,考虑一下JBoss在运行过程中试图打开1099上的套接字的情况 ServiceMBeanSupport (rmi)初始化,但端口1099已被占用。

    当前的行为是异常系统错误'd和JBoss继续初始化。稍后,在应用程序运行时期间,jndi查找会导致执行线程挂起——这不好,而且比失败的容器初始化更难诊断。

    java.net.BindException: Address already in use: JVM_Bind
     at java.net.PlainSocketImpl.socketBind(Native Method)
     at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
     at java.net.ServerSocket.bind(ServerSocket.java:319)
     at java.net.ServerSocket.<init>(ServerSocket.java:185)
     at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:170)
     at org.jnp.server.Main.initBootstrapListener(Main.java:331)
     at org.jnp.server.Main.start(Main.java:282)
     at org.jboss.naming.NamingService.startService(NamingService.java:236)
     at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
     at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
     at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
     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:155)
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
     at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
     at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
     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: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)
     at org.jboss.system.ServiceController.start(ServiceController.java:435)
     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: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.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
     at $Proxy4.start(Unknown Source)
     at org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)
     at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
     at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
     at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
     at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:755)
     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:155)
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
     at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
     at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
     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:659)
     at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
     at $Proxy5.deploy(Unknown Source)
     at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)
     at org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)
     at org.jboss.Main.boot(Main.java:200)
     at org.jboss.Main$1.run(Main.java:464)
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   skaffman    14 年前

    你不能,据我所知,但你是对的,它这样做很烦人。

        2
  •  0
  •   Hiran    11 年前

    我也同意jboss可能会失败,就像apachehttpd一样。

    用于预检查的脚本可能检测不到在检查之后JBoss获取端口之前,另一个进程将获取该端口。可能是一种罕见的情况,但也有可能,也很难察觉。

    由于JBoss不提供在无法打开端口时失败的功能,因此我建议监视日志记录。将log4j配置为通过邮件| SNMP |发出警报可能会很有帮助,无论发生什么情况,propertmanagement都可以立即启动。