随笔-60  评论-35  文章-15  trackbacks-0

---- 建立消息驱动Bean ----
* 菜单→File→New→Project,从树形菜单中选择EJB→EJB Project点击[Next]按钮
* Project Name填入"MsgTest",点击[Next]→按钮后勾选所有选项,点击[Next]→将Create an EJB Client ...前面的√去掉,点击[Finish]按钮。
* 右键点击工程名→New→Other,从树形菜单中选择EJB→XDoclet Enterprise JavaBean,点击[Next]按钮
* 选择MessageDrivenBean,点击[Next]按钮
* ClassName填入"TestMsgBean",Java package填入"com.msgtest.ejb",点击[Next]按钮
* Destination JNDI Name填入"TestMessage",其余不修改,点击[Finish]按钮

---- 建立测试 -----
* 菜单→File→New→Other,从树形菜单中选择Java→JUtil Test Case→点击[Next]按钮,如果出现对话框选择"YES"
* Package 填入"com.msgtest.test",Name填入"Msgtest",点击[Finish]按钮
* 将%JBOSS_HOME%/client下面的所有jar文件都加入到工程路径中来,因为要连接JBOSS需要这些JAR,下面的加入的步骤
  1. 菜单→Project→Properties,从树形菜单中选择Java Build Path,点击Libraries选项卡,选择Add Library
  2. 选择User Library,点击[Next]
  3. 点击User Libraries按钮
  4. 点击New按钮,输入JBoss1.4RC1Client,点击[OK]按钮
  5. 点击Add Jars按钮,选择%JBOSS_HOME%/client目录下面的所有jar文件,除了jboss-j2ee.jar
  6. 点击[ok]按钮,点击[Finish]按钮,点击[ok]按钮

* 将 Msgtest.java 文件编辑成下列代码:
里面值得注意的是 Factory 对应的是 jms/QueueConnectionFactory,Queue对应的是 queue/TestMsg

如果以上两条忘记了,第一条可以参看http://localhost:8080/jmx-console/中关于jboss.jms的部分,里面应该有一行alias=QueueConnectionFactory,而这个"QueueConnectionFactory",就是我们需要的JNDI
至于第二条,可以参看在部署完毕工程的时候JBoss的操作屏幕会出现对应的queue/xxx就是对应的部分

package  com.msgtest.test;

import  java.util.Hashtable;

import  javax.jms.ConnectionFactory;
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.Session;
import  javax.jms.TextMessage;
import  javax.naming.Context;
import  javax.naming.NamingException;

import  junit.framework.TestCase;

public   class  Msgtest  extends  TestCase  {
    
public   void  test()
    
{
        javax.naming.InitialContext initialContext
= null ;
        
try   {
            Hashtable props 
=   new  Hashtable();
            props.put(
                Context.INITIAL_CONTEXT_FACTORY,
                
" org.jnp.interfaces.NamingContextFactory " );
            props.put(
                Context.URL_PKG_PREFIXES,
                
" org.jboss.naming:org.jnp.interfaces " );
            props.put(Context.PROVIDER_URL, 
" jnp://localhost:1099 " );            
            initialContext 
=   new  javax.naming.InitialContext(props);
            QueueConnectionFactory queueConnectionFactory;
            queueConnectionFactory 
=  (QueueConnectionFactory)initialContext.lookup( " QueueConnectionFactory " );
            Queue queue 
=  (Queue)initialContext.lookup( " queue/TestMsg " );
            
            QueueConnection queueConnection 
=  queueConnectionFactory.createQueueConnection();
            QueueSession queueSession 
=  queueConnection.createQueueSession( false ,Session.AUTO_ACKNOWLEDGE);
            QueueSender queueSender 
=  queueSession.createSender(queue);    
            TextMessage message 
=  queueSession.createTextMessage();
            
for  ( int  i  =   0 ; i  <   5 ; i ++ {
                message.setText(
" This is message  "   +  (i  +   1 ));
                System.out.println(
" Sending message:  "   + message.getText());
                queueSender.send(message);
            }
            
        }
  catch  (NamingException e)  {
            
//  TODO Auto-generated catch block
            e.printStackTrace();
        }
  catch  (JMSException e)  {
            
//  TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

* 将工程目录下面的 build/classes 目录下面的所有文件打包成一个 MsgTest.jar 文件
  jar cvf MsgTest.jar *
* 将生成的 MsgTest.jar 拷贝到 %JBOSS_HOME%/server/default/deploy/目录下,启动JBoss

运行这个例子
posted on 2006-04-03 18:46 Q系列类、方法、变量…… 阅读(1584) 评论(1)  编辑  收藏

评论:
# re: Eclipse下面的EJB的消息驱动Bean建立 2006-04-05 00:16 | fanse
Eclipse 真好,又免费,又很友好

欢迎访问 http://www.shuangzixing.net 双子星Java开源技术门户  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: