大家好,刚刚接触JBoss中的   JMS   不久,现在项目中需要完成这样的功能:  
  一台配置好JMS队列的JBoss   服务器,在另一台机器上通过Java程序连接并且发送、读取其上的队列的消息。  
   
  我试了本地的,可以发送,连接能够成功:  
  我的机器名称:wangxl   ,另一台机器装了同样的JBoss,Ip   为:10.4.0.111。  
  但是   连接到另一台不成功:  
  请问这个   Context.PROVIDER_URL   该怎么设置,或者服务器上该怎么配置?  
   
   
  public   TestConnectJMS()   {  
  Context   ctx=null;  
  QueueConnection   con=null;  
  try   {  
  QueueConnectionFactory   myQConnFactory;  
  Queue   myQueue;  
   
  Properties   properties   =   new   Properties();  
  properties.put(Context.INITIAL_CONTEXT_FACTORY,  
  "org.jnp.interfaces.NamingContextFactory");  
  properties.put(Context.URL_PKG_PREFIXES,   "org.jnp.interfaces");  
  properties.put(Context.PROVIDER_URL,   "wangxl");  
   
  ctx   =   new   InitialContext(properties);  
   
  myQConnFactory   =   (QueueConnectionFactory)   ctx  
  .lookup("UIL2ConnectionFactory");  
  myQueue   =   (Queue)   ctx.lookup("queue/PmsOrderQueue");  
   
  ctx.bind("SimpleSender",   myQueue);  
   
  con   =   myQConnFactory.createQueueConnection();  
  QueueSession   session   =   con.createQueueSession(false,  
  Session.AUTO_ACKNOWLEDGE);  
  TextMessage   textMessage   =   session.createTextMessage();  
  QueueSender   sender   =   session.createSender(myQueue);  
  con.start();  
   
  for   (int   i   =   0;   i   <   10;   i++)   {  
  textMessage.setText("Hello   World   #"   +   i);  
  sender.send(textMessage);  
  }  
   
  con.close();  
  ctx.close();  
   
  }   catch   (Exception   e)   {  
  try   {  
  con.close();  
  }   catch   (Exception   e2)   {}  
  try   {  
  ctx.close();  
  }   catch   (Exception   e3)   {}    
   
  e.printStackTrace();  
  }  
   
   
  请问这个   Context.PROVIDER_URL   该怎么设置?  
  希望大家给点提示。讨论一下也好。  
      报错信息:
javax.naming.CommunicationException   [Root   exception   is   java.rmi.NoSuchObjectException:   no   such   object   in   table]  
  at   org.jnp.interfaces.NamingContext.lookup(NamingContext.java:647)  
  at   org.jnp.interfaces.NamingContext.lookup(NamingContext.java:507)  
  at   javax.naming.InitialContext.lookup(Unknown   Source)  
   
  我不明白的就是需要在   两台JBoss的服务器上做些什么配置么?主要的问题是这个,找JBoss   的文档说的也不清不楚的。   

解决方案 »

  1.   

    JBOSS版本:4.2.2GA
    症状:服务器无法通过IP地址去访问,只能用127.0.0.1或者localhost来访问。
    解决办法:
    启动JBOSS的时候输入:run -b xxx.xxx.xxx.xxx
    其中xxx.xxx.xxx.xxx为本机的IP地址。
    原因:
          JBOSS 4.2以上版本服务启动如果不加任何参数的话,只监听127.0.0.1,就是说只能用127.0.0.1或者localhost访问,用本机的对外地址 访问不了,同一网络内别的机子没法访问。除非你用参数-b ip地址 来绑定监听的地址才可以。
        这和以前版本的JBOSS不一样,以前版本的不加任何参数是监听本机所有的IP地址,现在必须使用参数-b 0.0.0.0才可以监听全部地址。======================================
    附,以下是我的具体解决方法:
    在jboss-4.2.2.GA\bin目录下,新建start.bat文件,录入如下内容:
    run.bat -b 0.0.0.0
    保存即可。使用你新制作的start.bat文件启动服务之后就可以IP访问了。
    ======================================
      

  2.   

    也可以直接修改run.bat文件,增加 -b 0.0.0.0 参数即可。
    :RESTART
    "%JAVA%" %JAVA_OPTS% "-Djava.endorsed.dirs=%JBOSS_ENDORSED_DIRS%" -classpath "%JBOSS_CLASSPATH%" org.jboss.Main %* -b 0.0.0.0
    if ERRORLEVEL 10 goto RESTART