一个关于jms的问题

megson 2003-05-06 11:42:34
我装有J2EE 1.4

一个简单的JMS 服务端程序为:
import javax.naming.*;
import javax.jms.*;

public class SimpleQueueSender{
public static void main(String[] args){
String queueName = null;
Context jndiContext = null;
QueueConnectionFactory queueConnectionFactory = null;
QueueConnection queueConnection = null;
QueueSession queueSession = null;
QueueSender queueSender = null;
Queue queue = null;
TextMessage message = null;
final int NUM_MSGS;

if ((args.length<1)||(args.length >2)){
System.out.println("Usage: java SimpleQueueSender" +
"<queue-name>[<number-of-message>]");
System.exit(1);
}
queueName = new String(args[0]);
System.out.println("Queue name is " + queueName);
if (args.length == 2){
NUM_MSGS = (new Integer(args[1])).intValue();
} else {
NUM_MSGS = 1;
}

try{
jndiContext = new InitialContext();
}catch (NamingException e){
System.out.println("Could not create JNDI API" +
"context: " + e.toString());
System.exit(1);
}

try{
queueConnectionFactory = (QueueConnectionFactory)
jndiContext.lookup("QueueConnectionFactory");
queue = (Queue) jndiContext.lookup(queueName);
}catch (NamingException e) {
System.out.println("JNDI API lookup failed: " +
e.toString());
System.exit(1);
}

try {
queueConnection =
queueConnectionFactory.createQueueConnection();
queueSession =
queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
queueSender = queueSession.createSender(queue);
message = queueSession.createTextMessage();
for (int i=0 ; i < NUM_MSGS; i++){
message.setText("This is message" + (i+1) );
System.out.println("Sending message: " +
message.getText());
queueSender.send(message);
}
queueSender.send(queueSession.createMessage());
}catch (JMSException e ){
System.out.println("Exception occurred: " +
e.toString());
}finally{
if (queueConnection != null){
try{
queueConnection.close();
}catch (JMSException e){}
}
}
}
}

然后启动J2EE

用一下命令行运行:
java -Djms.properties=%J2EE_HOME%\config\jms_client.properties SimpleQueueSender MyQueue 3

错误如下:
JNDI API lookup failed: javax.naming.CommunicationException: com.sun.enterprise.resource.PoolingException
at com.sun.enterprise.naming.factory.JavaAppClientObjectHandler.createConnectionFactory(JavaAppClientObjectHandler.java:194)
at com.sun.enterprise.naming.factory.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:89)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:124)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at SimpleQueueSender.main(SimpleQueueSender.java:47)
Caused by: java.lang.ClassNotFoundException: com.sun.jms.connector.ra.JMSManagedQueueConnectionFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:267)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at com.sun.enterprise.naming.factory.JavaAppClientObjectHandler.createConnectionFactory(JavaAppClientObjectHandler.java:179)
... 5 more

请问是什么问题?
...全文
42 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
megson 2003-05-08
  • 打赏
  • 举报
回复
我根据http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JMS5.html一步一步,按照它上面来的,步骤:
1,启动J2EE
2, j2eeadmin -addJmsDestination myQueue queue (建立destination)
2,java -Djms.properties=%J2EE_HOME%\config\jms_client.properties SimpleQueueSender myQueue 3

后来我发现一个问题在我的%J2EE_HOME%\config\根本没有jms_client.properties 。只有jms_server.properties



我的问题是

一、你们的%J2EE_HOME%\config\有没有jms_client.properties
二、你的有没有%J2EE_HOME%\config\jms_server.properties,如果有那么com.sun.jms.internal.java.naming.provider.url是不是没有付值?如“com.sun.jms.internal.java.naming.provider.url=”
三、如果有jms_client.properties,那麻烦发一份给小弟:hierarch@citiz.net,my_baozi@msn.com
四、我用的是j2eesdk1.4自带的服务器,能正常启动,请问对jms还需如何配置?
megson 2003-05-08
  • 打赏
  • 举报
回复
to hymarx(hi马克思/偷偷给我一点爱千万别给我分)

我用的是j2eesdk1.4自带的服务器,能正常启动,请问对jms还需如何配置?
megson 2003-05-06
  • 打赏
  • 举报
回复
这是sun的jms简单的例子阿
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JMS5.html

一步一步,按照它上面来的 :(

有没有人做过啊~~~
littlecong 2003-05-06
  • 打赏
  • 举报
回复
应该是命名空间的问题(:废话)
看看它打算发布成什么名字
megson 2003-05-06
  • 打赏
  • 举报
回复
我是按照sun的jms教程执行的。

1。j2ee -verbose 启动j2ee
2. j2eeadmin -addJmsDestination MyQueue queue
3. java -Djms.properties=%J2EE_HOME%\config\jms_client.properties SimpleQueueSender MyQueue 3

第二步,没有问题。用j2eeadmin -listJmsDestination检验通过。

可是第一步启动j2ee时候有下列错误:
1、Starting JMS service...
Initialization complete - waiting for client requests
Starting JMS via Resource Adapter
Deploying jmsra.rar in E:\j2sdk\lib\system_apps\jmsra.rar
org.w3c.dom.DOMException: DOM003 Namespace error

2、JAXR:Installing JAXR RA
Deploying jaxr-ra.rar in E:\j2sdk\lib\system_apps\jaxr-ra.rar
org.w3c.dom.DOMException: DOM003 Namespace error

请问这是什么问题啊

ps:我装有j2ee1.4 beta.

hymarx 2003-05-06
  • 打赏
  • 举报
回复
应该是在服务器上没有配置jms,需要配置一个jms factory,jms queue,jms server

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧