首先要下载安装JBOSS,tomcat还不支持EJB开发
我下的是jboss-4.2.3.GA,大家网上搜下很多的。
Jdk环境配置要先配好,就是JAVA_HOME,CLASSPATH,PATH
Jdk的环境配置我也不多介绍。
下面直接开始EJB简单的实例,入门当然首选HelloWorld咯
EJB分有状态会话Bean和无状态会话Bean
有状态会话Bean:可以理解为web开发里面的session,当你第一次访问的时候,服务器那边会给你建一个新的session专门给你保存信息,然后当你走了之后你的浏览器会把这个session的Id记住,当你下次再访问的时候把sessionId直接带过去,这个字服务器就会直接找到上次你用过的session,里面还保存着你的信息。
无状态会话Bean: 访问有状态会话Bean的时候会给为每个访问都new一个Bean,
访问无状态会话Bean的话会从实例池中取得已经创建好的Bean进行操作。
好,下面开始先写Ejb的server:
先创建个接口 HelloWorld.java:
package test;
public interface HelloWorld {
void sayHello();
}
就这么简单,普通的一个接口
下面是HelloWorldBean.java(最好是以Bean结尾,规范):
package test;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
@Remote(value=HelloWorld.class)
public class HelloWorldBean implements HelloWorld {
public void sayHello() {
System.out.println("hello world");
}
}
用了2个annotation,
@Stateless:就说明这是一个无状态会话Bean
@Remote:说明这是一个远程访问的Bean,当客户端访问的时候需要建立Socket连接,这样相较@Local来说就比较耗资源,如果你的Bean在本地能访问到的话,首选@Local,默认也是@Local的
服务器就是这么简答。
代码敲好后,export出jar文件,放到jboss的server下的default下的deploy文件里
在jboss的控制台里就会出现相关信息。
就说明你的jar已经被jboss检测到,已经部署上去了。
那么接下来我们用client去调用ejb里的sayHello方法。
既然写客户端,那就再创建一个java project,然后把刚才写的project当做jar导入,或者直接把刚才export出去的jar导入都是可以的
package test;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class EjbClient {
public static void main(String[] args) {
try {
InitialContext init=new InitialContext();
HelloWorld helloworld=(HelloWorld)init.lookup("HelloWorldBean/remote");
helloworld.sayHello();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
代码也很少.
但是在运行之前还需要在src目录下创建一个jndi.properties文件,名字不能变
内容:
java.naming.provider.url=localhost\:1099
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
这相当与jboss为我们提供的一个入口,去寻找我们需要的ejb。
在jboss里面部署了很多服务。Java怎么找到我们需要的呢。
通过jndi(Java Naming and Directory Interface,Java命名和目录接口),好像有点拗口
就理解为,每个人都有一个名字,那么在jboss里跑的服务也是有名字的,你要找服务就要根据它的名字取找。
那么我们怎么知道我们刚才部署的jar的jndi名字是什么呢,这时有个规范 默认的话是以HelloWorldBean/remote 也就是你实现类的类名+“/”+“remote”这是远程调用的,本地的话就写local。
Run:
在JBoss控制台输出hello world
感谢大家看到这里了~~~~~~~~~~~~~~~~