谁调通过Weblogic700的JMS程序(Queue)
//MessageDrivenBean
package com.bluecode.j2ee.jms;
import javax.ejb.*;
import javax.jms.*;
import javax.naming.*;
public class MSGBean implements MessageDrivenBean, MessageListener {
private MessageDrivenContext messageDrivenContext;
public void ejbCreate() throws CreateException {
System.out.println("--> MSGBean.ejbCreate()");
}
public void ejbRemove() {
System.out.println("--> MSGBean.ejbRemove()");
}
public void onMessage(Message msg) {
System.out.println("--> MSGBean.onMessage()");
MapMessage map = (MapMessage) msg;
try {
System.out.println(map.getString("msgId"));
System.out.println(map.getString("msgTitle"));
System.out.println(map.getString("msgContent"));
}
catch (JMSException e) {
e.printStackTrace(System.out);
}
}
public void setMessageDrivenContext(MessageDrivenContext
messageDrivenContext) {
System.out.println("--> MSGBean.setMessageDrivenContext()");
this.messageDrivenContext = messageDrivenContext;
}
}
//Client
package com.bluecode.j2ee.jms;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/
import java.util.Hashtable;
import javax.jms.*;
import javax.naming.*;
public class MSGClient {
public MSGClient() {
}
public void sendMessage() {
try {
Hashtable hash = new Hashtable();
hash.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFact
ory");
hash.put(Context.PROVIDER_URL,"t3://yyuan:7001");
Context jndiContext = new InitialContext(hash);
QueueConnectionFactory queueConnectionFactory =
(QueueConnectionFactory)jndiContext.lookup("MSGQueueConnectionFactory");
Queue queue = (Queue) jndiContext.lookup("MSGQueue");
QueueConnection queueConnection =
queueConnectionFactory.createQueueConnection();
QueueSession queueSession = queueConnection.createQueueSession(false,
QueueSession.AUTO_ACKNOWLEDGE);
QueueSender queueSender = queueSession.createSender(queue);
MapMessage message = queueSession.createMapMessage();
message.setString ("msgId", "110");
message.setString ("msgTitle", "Queue Message");
message.setString ("msgContent", "Hello,Queue Message");
queueSender.send (message);
} catch(Exception e) {
e.printStackTrace(System.out);
}
}
public static void main(String[] args) {
MSGClient msgClient = new MSGClient();
msgClient.sendMessage();
}
}
上述两个程序我在Weblogic6.1中已经调试通过,但是采用相同的程序和定义在
Weblogic700下却无法调试通过。
在Weblogic700下的表现症状为:
1.MessageDrivenBena部署之后,可以看见它被实例化(设定最小实例Bean个数的
体现)调用ejbCreate()和setMessageDrivenContext()方法之后向控制台答应消息的内
容。
2.客户端程序运行正常,Queue和ConnectionFactory都能够找到。
3.在服务器控制台中,可以监视到运行客户端程序之后发出的消息个数以及字节数
等等。
4.MessageDrivenBean的onMessage()方法没有响应,无法进行方法内部的操作。
兄弟我也是初步接触JMS,但是这个小小的问题困扰我好长时间,希望有经验的老大们
能替小弟指点迷径!
bonnieyuan@263.net