Ejb3.0--1
今天学习了一下午的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了,待续。。。。。。。。。。。。