大家好,刚刚接触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 的文档说的也不清不楚的。
一台配置好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 的文档说的也不清不楚的。
解决方案 »
- 请问谁有工具类sqlhelper类及dbutil
- 有一个开源第三方框架,N多jar包。我想编译运行看源码,注意是要可以编译运行的,在线等
- 我是一个新手
- 在程序里怎么给交叉报表(JasperReport)传递参数?
- glassfish怎么发布几个项目共用的JAR
- 关于单点登录的解决方案,大家有什么可以推荐的?
- eclipse struts设置
- SSH分页问题~!急~!跪求~!
- 请介绍一些中文讨论 spring frameword 或者 jetspeed的网址。
- webservice\websphere\weblogic都是些什么东西啊?
- Connection PreparedStatement 无法取得数据
- 关于JSF自定义组件重复生成
症状:服务器无法通过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访问了。
======================================
: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