Service:
package com.test.ejb;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import javax.ejb.ActivationConfigProperty;
@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) {
TextMessage textMessage =(TextMessage)msg;
try {
System.out.println("MyQueueMDBBean被调用了【"+textMessage.getText()+"】");
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Client:
package com.test.ejb;
import javax.jms.JMSException;
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;
import javax.naming.NamingException;
public class MyQueueMDBBeanClient {
/**
* @param args
*/
public static void main(String[] args) {
try {
//获取QueueConnectionFactory对象
InitialContext context =new InitialContext();
QueueConnectionFactory factory =(QueueConnectionFactory)context.lookup("ConnectionFactory");
//创建QueueConnection
QueueConnection connnection =factory.createQueueConnection();
//创建QueueSession
QueueSession session =connnection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
//获取Destination对象
Queue queue =(Queue)context.lookup("queue/myqueue");
//获取文本信息
TextMessage msg =session.createTextMessage("世界你好啊!");
//创建发送者
QueueSender sender =session.createSender(queue);
//关闭会话
session.close();
connnection.close();
//发送消息
sender.send(msg);
System.out.println("消息已发送");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
发布启动Jboss时出现异常:
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 org.jnp.interfaces.NamingContext.lookup(NamingContext.java:713)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:673)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.jboss.util.naming.Util.lookup(Util.java:222)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupDestination(JmsActivation.java:464)
at org.jboss.resource.adapter.jms.inflow.JmsActivation.setup(JmsActivation.java:352)
at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:729)
at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260)
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)
解决办法:
我发现在JBoss根目录\server\default\deploy
下的mail-service.xml文件中加入如下:
<mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.org.destination:server=Queue,name=myqueue" >
<attribute name="JNDIName" >queue/myqueue</attribute>
<depends optional-attribute-name = "DestinationManager" > jboss.mq:service=DestinationManager </depends>
</mbean>
重启JBoss问题即解决。
topic找不到
<mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.org.destination:server=Topic,name=mytopic" >
<!-- JNDI名称 -->
<attribute name="JNDIName">topic/mytopic</attribute>
<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
</mbean>
分享到:
相关推荐
在IT行业中,我们经常遇到各种异常,其中之一是“Javax.naming.NameNotFoundException”。这个异常通常在Java命名和目录接口(JNDI)中出现,当我们尝试查找一个在命名上下文中不存在的名称时,就会抛出这个异常。...
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....
在本文中,将详细讲解当部署EJB3.0的消息驱动Bean时,可能会遇到`javax.naming.NameNotFoundException`异常的情况,并提出相应的解决方案。 首先,了解`javax.naming.NameNotFoundException`异常的具体情况是解决...
javax.ejb.EJB.class javax.ejb.EJBAccessException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax...
javax.ejb.AccessLocalException.class javax.ejb.CreateException.class javax.ejb.DuplicateKeyException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb....
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....
**企业级JavaBeans(EJB)3.0详解** 企业级JavaBeans(EJB)是Java平台上用于构建可部署在企业级服务器上的组件模型。EJB 3.0是其一个重要版本,它引入了许多改进,使得开发过程更为简化,降低了EJB的复杂性,更加...
**企业级JavaBeans(EJB)3.0详解** 企业级JavaBeans(EJB)是Java平台上用于构建可部署在企业级应用服务器上的组件模型。EJB 3.0是其一个重要版本,它引入了许多改进,旨在简化开发过程并提高生产力。这本书《EJB...
5. **依赖注入**:JSF 1.2 和 EJB 3.0 都支持依赖注入(DI),通过注解 `@ManagedProperty` 或 `@EJB` 可以在 JSF Managed Bean 中注入 EJB,简化了组件之间的协作。 6. **Faces Flow**:JSF 1.2 引入了 Faces Flow...
EJB 3.0是EJB规范的一个重要版本,它在2006年发布,引入了许多重要的改进,使得开发过程变得更加简洁和灵活。 EJB 3.0的核心概念包括实体Bean(Entity Beans)、会话Bean(Session Beans)和消息驱动Bean(Message-...
【标题】"javax.ejb.jar.zip" 是一个与Java企业版(Java EE)相关的压缩文件,其中包含`javax.ejb.jar`这个核心组件。该组件是Java平台企业版的一部分,主要用于实现企业级Java应用中的Enterprise JavaBeans(EJB)...
- `javax.ejb.EJB`、`javax.ejb.Local`和`javax.ejb.Remote`等注解:用于标记bean的接口,指定其作用范围和远程访问方式。 - `javax.ejb.TimerService`:提供了定时任务的管理,可以在EJB中创建和管理定时器。 描述...
EJB(Enterprise JavaBeans)3.0是Java EE(Enterprise Edition)平台中的一部分,它提供了一种用于构建可部署在服务器端的企业级应用程序的框架。EJB 3.0引入了许多改进,使得开发过程更加简洁,降低了对XML配置的...
EJB3.0是EJB规范的一个重大版本更新,它在EJB2.0的基础上进行了大量的改进和优化,使得开发人员能够更轻松地构建复杂的企业级应用程序。 **特点与改进:** 1. **简化编程模型:**EJB3.0引入了许多新的特性来简化...
javax.ejb-api.jar 这个包是用于EJB开发的工具包,请需要的自行下载
“Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity”,查找资料发现是缺少jar包. 添加此包就OK了。 更多说明:https://blog.csdn.net/kingmax54212008/article/details/82762624
### jBoss EJB 3.0 开发指南 #### 一、引言 随着 Java 技术的发展,企业级应用的复杂度不断提高,EJB(Enterprise JavaBeans)作为 Java EE 标准的一部分,在构建分布式系统方面扮演着重要的角色。EJB 3.0 相较于...
在ejb.jar.zip文件中,ejb.jar包含了编译后的EJB类文件和其他相关资源。`license.txt`文件通常包含了该软件的许可协议,详细说明了软件的使用条件和限制,这对于合法使用和分发软件至关重要。 EJB技术的特点和优势...