EJB30在发布时出现异常javax.naming.NameNotFoundException: RequestOmsQueue not bound
platform:
Jboss 5.1GA(默认jms提供者为JBoss Messaging 1.4,而非JbossMQ)
服务器端:
package com.octawave.oms.trade.msg;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
/**
* Message-Driven Bean implementation class for: QueueMessageBean
*
*/
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/RequestOmsQueue") })
public class QueueMessageBean implements MessageListener {
/**
* Default constructor.
*/
public QueueMessageBean() {
// TODO Auto-generated constructor stub
}
/**
* @see MessageListener#onMessage(Message)
*/
public void onMessage(Message message) {
try {
ObjectMessage obj = (ObjectMessage) message;
System.out.println("服务器收到的消息是:" + omessage.getObject());
} catch (Exception e) {
}
}
}
客户端:
package com.octawave.oms.trade.msg;
import javax.jms.JMSException;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class MDBClient {
public static void main(String[] args) {
try {
InitialContext context = new InitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory) context
.lookup("ConnectionFactory");
QueueConnection connection = factory.createQueueConnection();
QueueSession session = connection.createQueueSession(false,
QueueSession.AUTO_ACKNOWLEDGE);
// 获取Destination对象
Queue queue = (Queue) context.lookup("queue/RequestOmsQueue");
// 创建发送者
QueueSender sender = session.createSender(queue);
// 创建文本消息
ObjectMessage msg = session.createObjectMessage("hello world!");
// 发送消息
sender.send(msg);
// 关闭会话
session.close();
connection.close();
System.out.println("消息发送完毕");
} catch (NamingException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
我发现在JBoss5.x根目录server/default/deploy下的mail-service.xml文件中加入如下:
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.org.destination:server=Queue,name=RequestOmsQueue" >
<attribute name="JNDIName" >queue/RequestOmsQueue</attribute>
<depends optional-attribute-name = "DestinationManager" >
jboss.mq:service=DestinationManager
</depends>
</mbean>
重启JBoss问题即解决。
这是我自己的情况。当然这个导致这个异常的肯定不止这一个问题。《JBoss AS 5 Development》第7章有提到在server/**/deploy下建立一个*-service.xml的文件,大致如下:
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=
RequestOmsQueue" xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
</mbean>
</server>
另外还有,实体和数据库连接不上或者出问题时,也会出现NameNotFoundException,比如
persistence.xml里的<jta-data-source>java:/MySqlDS</jta-data-source>没有对应好。
附:
另见:http://jeff312.iteye.com/blog/398687
分享到:
相关推荐
JBossTools实践系列:JBossESB服务开发入门
赠送jar包:jboss-logging-3.4.1.Final.jar; 赠送原API文档:jboss-logging-3.4.1.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.1.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.1.Final....
赠送jar包:jboss-logging-3.4.3.Final.jar; 赠送原API文档:jboss-logging-3.4.3.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.3.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.3.Final....
### EJB3.0开发Message Driven Bean #### 一、概述 Enterprise JavaBeans (EJB) 是一种基于Java的应用程序编程接口(API),用于开发分布式企业级应用。EJB3.0作为Java EE5规范的一部分,引入了许多简化开发的新特性...
赠送jar包:jboss-logging-3.3.2.Final.jar; 赠送原API文档:jboss-logging-3.3.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.3.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.3.2.Final....
赠送jar包:jboss-logging-3.4.2.Final.jar; 赠送原API文档:jboss-logging-3.4.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.2.Final....
4. 热部署功能:能自动检测并部署或更新 Bean,无需重启服务器。 5. 高效运行:EJB 调用不经过网络,提升性能和安全性。 6. 一站式部署:支持直接部署 J2EE-EAR 文件,简化部署流程。 7. 集群支持:提供集群解决方案...
- 部署到Jboss:通过管理控制台或命令行将ejb-jar文件部署到Jboss服务器。 5. **ejbclient**: - ejbclient模块通常包含客户端代码,用于与服务器上的EJB通信。它包含了所需的JNDI查找逻辑和远程接口引用,使得...
- **EJB3 服务器配置**: 针对企业级Java Bean的配置进行深入讲解,包括事务管理、会话Bean设置等。 - **JBoss Messaging**: 深入了解如何配置JBoss的消息服务,支持异步通信、消息队列等特性。 - **Web Services...
文档目录: 一.JBOSS入门 1.下载和安装JBoss ...3.消息驱动Bean (Message Driven Bean) 3.1 Queue消息的发送与接收(PTP消息传递模型) 3.2 Topic消息的发送与接收(Pub/sub 消息传递模型) 4.实体Bean(Entity Bean)
JBoss 父 POM JBoss 社区项目的父级 Maven POM。 它是什么? JBoss 父 POM 为 Maven 构建提供默认配置。 最常用的 Maven 插件的推荐/默认版本 jar 和程序集插件的清单配置 用于生成源 jar 和强制执行最低版本的 Java...
### JBoss服务设置开机自启(Linux) #### 知识点概述 在Linux环境中,确保JBoss服务能够随系统启动而自动启动对于提高系统的稳定性和可用性至关重要。本篇文章将详细介绍如何在CentOS 7环境下配置JBoss服务,使其...
### JBoss Messaging 1.4.0.GA 用户指南知识点概览 #### 一、关于本书及介绍 **1.1 关于本书** 本用户指南是JBoss Messaging 1.4.0.GA版本的官方文档,详细介绍了该消息中间件的安装与配置流程。文档由Red Hat公司...
在实验中,你可能还会学习到EJB的接口定义、实体Bean(Entity Bean,用于持久化数据)、消息驱动Bean(Message-Driven Bean,用于处理消息队列)以及EJB的生命周期管理。此外,理解EJB容器如何处理事务、安全性、...
1. **EJB组件**:EJB分为三种类型:Session Beans(会话bean),Entity Beans(实体bean)和Message Driven Beans(消息驱动bean)。Session Beans用于处理业务逻辑,Entity Beans代表持久化的数据库对象,而Message...
java网页抓取部分源码JBoss 工具可视化页面编辑项目 概括 Visual Page Editing 提供了一个编辑器,它具有基于 XML 的文档的源代码和可视化预览,它还包含 BrowserSimulator,用于像移动浏览器一样编辑/查看您的项目...
JBoss是著名的开源Java应用服务器,它提供了丰富的功能和组件,用于开发、部署和管理企业级Java应用程序。这个压缩包包含的文档主要涵盖了JBoss的安装、启动、配置以及集群等核心主题,对于理解并使用JBoss至关重要...
JBoss Portal是一款基于Java EE平台的企业级门户框架,它提供了集成、管理以及展示各种Web应用程序和服务的能力。本文档将详细阐述JBoss Portal的安装与配置过程,帮助开发者快速搭建一个功能完备的门户环境。 1. *...
它们有三个主要的组成部分:Bean类、接口和部署描述符。Bean类实现了业务逻辑,接口定义了客户端可以调用的方法,而部署描述符(ejb-jar.xml)则包含了关于Bean的配置信息。 在文件列表中,`MailBean.java`很可能是...