初学EJB3.0遇到一个问题。用Jboss6.0学习MDB的时候出javax.naming.NameNotFoundException 谷歌了半天也没搞定。
package cong.deng.ejb;import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/myqueue")
}
)
public class MyQueueMDBBean implements MessageListener { public void onMessage(Message msg) {
try {
TextMessage tmsg = (TextMessage) msg;
System.out.println("MyQueueMDBBean被调用了[" + tmsg.getText() + "]");
} catch (JMSException e) {
e.printStackTrace();
}
}}package cong.deng.ejb;import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.InitialContext;public class MyQueueMDBBeanClient { public static void main(String[] args) throws Exception {
InitialContext context = new InitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory) context
.lookup("ConnectionFactory"); QueueConnection connection = factory.createQueueConnection();
QueueSession session = connection.createQueueSession(false,
QueueSession.AUTO_ACKNOWLEDGE); Queue queue = (Queue)context.lookup("queue/myqueue");
TextMessage message = session.createTextMessage("你好");
QueueSender sender = session.createSender(queue);
sender.send(message);
session.close();
connection.close();
System.out.println("end!");
}
异常Exception in thread "main" javax.naming.NameNotFoundException: myqueue not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
at org.jnp.server.NamingServer.lookup(NamingServer.java:443)
at org.jnp.server.NamingServer.lookup(NamingServer.java:399)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:728)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at cong.deng.ejb.MyQueueMDBBeanClient.main(MyQueueMDBBeanClient.java:24)
小弟初学ejb 望大虾们指点指点
package cong.deng.ejb;import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/myqueue")
}
)
public class MyQueueMDBBean implements MessageListener { public void onMessage(Message msg) {
try {
TextMessage tmsg = (TextMessage) msg;
System.out.println("MyQueueMDBBean被调用了[" + tmsg.getText() + "]");
} catch (JMSException e) {
e.printStackTrace();
}
}}package cong.deng.ejb;import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.InitialContext;public class MyQueueMDBBeanClient { public static void main(String[] args) throws Exception {
InitialContext context = new InitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory) context
.lookup("ConnectionFactory"); QueueConnection connection = factory.createQueueConnection();
QueueSession session = connection.createQueueSession(false,
QueueSession.AUTO_ACKNOWLEDGE); Queue queue = (Queue)context.lookup("queue/myqueue");
TextMessage message = session.createTextMessage("你好");
QueueSender sender = session.createSender(queue);
sender.send(message);
session.close();
connection.close();
System.out.println("end!");
}
异常Exception in thread "main" javax.naming.NameNotFoundException: myqueue not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
at org.jnp.server.NamingServer.lookup(NamingServer.java:443)
at org.jnp.server.NamingServer.lookup(NamingServer.java:399)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:728)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at cong.deng.ejb.MyQueueMDBBeanClient.main(MyQueueMDBBeanClient.java:24)
小弟初学ejb 望大虾们指点指点
解决方案 »
- 大家来谈谈这个log4j到底有什么用?
- lib目录下引入过多的jar包影响性能吗?
- java mail如何使用
- WebService是“良药”还是“毒药”?
- 一段java代码,我不是很理解,希望大家帮我看下解释下,很是感谢,急
- 如何发布自己做的J2EE项目到外网上,急啊!
- form 传递中文检索条件乱码问题
- 在网页<用jsp>上怎样实现QQ上的屏幕截图功能? 请大家进来看看!!
- 求教json中存放对象问题的解决方法
- 请教简单问题
- javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans
- WebService客户端调用异常问题
对,消息列队那个XML楼主你要没有丢在JBOSS里当然JNDI找不到啦。
<configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
<queue name="MyQueue">
<entry name="/queue/MyQueue"/>
</queue>
</configuration>这样就可以在发布EJB的同时将消息队列配置完毕了!