但是,我在部署无状态会话Bean时,只要把打包好的jar文件,放在deploy下,在运行客户端就可以看到所要输出的字符串了
bang大哥,请帮我看一下是哪里错了,先谢了
这是logBean:
package log;
import javax.ejb.*;
import javax.jms.*;
public class logBean implements MessageDrivenBean, MessageListener {
protected MessageDrivenContext ctx;
public void setMessageDrivenContext(MessageDrivenContext ctx) {
this.ctx = ctx;
}
public void ejbCreate() {
System.err.println("ejbCreate()");
}
public void onMessage(Message msg) {
TextMessage tm = (TextMessage) msg;
try {
String text = tm.getText();
System.err.println("Received new message : " + text);
}
catch(JMSException e) {
e.printStackTrace();
}
}
public void ejbRemove() {
System.err.println("ejbRemove()");
}
}
这是一客户端:
package log;
import javax.naming.*;
import javax.jms.*;
import java.util.*;
public class logClient {
public static void main (String[] args) throws Exception {
Properties props =new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
props.put(Context.PROVIDER_URL,"192.168.0.163:1099");
Context iniCtx = new InitialContext( props);
Object tmp = iniCtx.lookup("jms/TopicConnectionFactory");
TopicConnectionFactory factory = (TopicConnectionFactory) tmp;
TopicConnection connection = factory.createTopicConnection();
TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = (Topic) iniCtx.lookup("jms/Topic");
TopicPublisher publisher = session.createPublisher(topic);
TextMessage msg = session.createTextMessage();
msg.setText("This is a test message.");
publisher.publish(msg);
System.out.println ("Message published to jms/Topic. Please check application server's console to see the response from MDB.");
}
}
还有ejb-jar.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee" version="2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
<display-name>log</display-name>
<enterprise-beans>
<message-driven>
<ejb-name>log</ejb-name>
<ejb-class>log.logBean</ejb-class>
<messaging-type>javax.jms.MessageListener</messaging-type>
<transaction-type>Bean</transaction-type>
<message-destination-type>javax.jms.Topic</message-destination-type>
<message-destination-link>PhysicalTopic</message-destination-link>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<message-destination>
<message-destination-name>PhysicalTopic</message-destination-name>
</message-destination>
</assembly-descriptor>
</ejb-jar>
这是jboss.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>log</ejb-name>
<jndi-name>log</jndi-name>
<message-driven>
<configuration-name>Standard Message Driven Bean</configuration-name>
<destination-jndi-name>jms/Topic</destination-jndi-name>
</message-driven>
</session>
<secure>true</secure>
</enterprise-beans>
<resource-managers />
</jboss>
我觉得没有什么问题呀,但jboss总是no ClassLoaders found for:log.logBean