浏览 5002 次
锁定老帖子 主题:Ejb3.0--1
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-13
今天学习了一下午的ejb3.0遇见了一些麻烦,拿出来和大家分享一下。以免大家以后遇到同样的问题 A)首先,我下载了jboss服务器,这个是ejb的运行环境,必不可少。 B)我将他解压到/usr/jboos下,然后修改用户的profile文件vi /home/xiaocong/.bash_profile ;在里面添加 export JBOSS_HOME=/usr/jboss; export PATH= $PATH:$JBOSS_HOME/bin; (注)我已经安装了jdk1.5,并且已经设置好环境变量了,还要注意jboss文件夹的所有者啊!必要的时候使用root用户,chown一下。 C)ok,现在可以运行一下jboss了。 D)打开我的IDE,新建一个ejb工程HelloWorld。 E)创建个自己的包com.chenzhq.ejb. F)创建一个无状态的会话bean(stateless session bean)的远程接口HelloWorldRemote. package com.chenzhq.ejb; import javax.ejb.Remote; @Remote ({HelloWorldRemote.class}) public interface HelloWorldRemote { public String say(String name); } G)创建Remote接口的实现。 package com.chenzhq.ejb; import javax.ejb.Local; import javax.ejb.Remote; import javax.ejb.Stateless; @Stateless//注意这里啊 @Remote ({HelloWorldRemote.class})//注意这里啊 public class HelloWorld implements HelloWorldRemote { public String say(String name){ System.out.println(HelloWorld.class.getCanonicalName()); return name; } } H)ok,写个ant脚本 <?xml version="1.0" encoding="UTF-8"?> <project name="ejb" default="jar"> <target name="jar"> <jar destfile="D:\work\lib\helloworld.jar"> <fileset dir="./classes"> <include name="**/*.class"/> <include name="**/*.xml"/> </fileset> </jar> </target> </project> I)将helloworld.jar复制到/usr/jboss/server/all/deploy下。看看控制台是否有输出 15:40:51,714 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=helloworld.jar,name=HelloWorld,service=EJB3 with dependencies: 15:40:51,757 INFO [EJBContainer] STARTED EJB: com.chenzhq.ejb.HelloWorld ejbName: HelloWorld 15:40:51,781 INFO [EJB3Deployer] Deployed: file:/usr/jboss/server/default/deploy/helloworld.jar 如果有上面的输出,说明是成功部署了。 在ie里输入http://ip:port访问jboss的jmx-console点击service=jndiView,然后是点击Output JNDI info as text下的invoke,查找HelloWorld。 J)在client端调用ejb的代码。 package com.chenzhq; import java.util.Properties; import javax.naming.InitialContext; import javax.naming.NamingException; import com.chenzhq.ejb.HelloWorldRemote; public class Test { /** * @param args */ public static void main(String[] args) { Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url", "jnp://192.168.0.2:1099");//这里是我部署ejb的主机地址。 props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); try { InitialContext ic = new InitialContext(props); HelloWorldRemote hwr = ((HelloWorldRemote)ic.lookup("HelloWorld/remote")); System.out.println(hwr.say("chenzhq")); } catch (NamingException e) { // TODO Auto-generated catch block System.out.print(e); e.printStackTrace(); } // } } Ok了,待续。。。。。。。。。。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-23
楼主是在linux环境下搞的?
|
|
返回顶楼 | |
发表时间:2008-10-24
对,我比较喜欢linux。
|
|
返回顶楼 | |
发表时间:2008-10-24
这种做法是用EJB2的做法来做EJB3的程序,实际上EJB3用起来比这个还要简单,以前写过一篇文章,不知道给弄哪儿去了,等我找到了贴过来。
|
|
返回顶楼 | |
发表时间:2008-11-02
其实这一句@Remote ({HelloWorldRemote.class})//注意这里啊 完全可以去掉,而且远程接口里面的HelloWorldRemote.class也可以去掉,楼主可以试一试
|
|
返回顶楼 | |