转载自 http://blog.sina.com.cn/s/blog_678530f60100hvwy.html
声明:这个Converter的例子应该是J2EE 1.4 Tutorial上面的。不过那上面都是用NetBeans开发的。让人知其然,不知所以然。同时本文参考了网上的一些资料。算不上原创,只能说是把别人 的东西拿来总结了一下。
1、 开发环境:Windows
XP SP2,WTP1.02,JBoss4.02,JDK1.5.05
2、 在WTP中新建一个EJB
Projcet:ejb_demo,然后加入一个EJB模块所需要的文件: Remote(or Local) Interface、Remote(or Local) Home Interface、Bean class。本例子中依次为:Converter.java、ConverterHome.java、ConverterEJB.java。源代码见后 面。
Ø Converter.java Remote
Interface
Ø ConverterHome.java Remote
Home Interface
Ø ConverterEJB.java Bean
class
代码如下:
代码1:Converter.java
// Converter.java -- Remote Interface.
// 2006-10-13 12:46
import java.rmi.RemoteException;
import javax.ejb.*;
public interface Converter extends EJBObject {
}
代码2:ConverterHome.java
// ConverterHome.java -- Remote Home Interface.
// 2006-10-13 12:50
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface ConverterHome extends EJBHome {
}
代码3:ConverterEJB.java
// ConverterEJB.java -- Bean class.
// 2006-10-13 12:54
import java.rmi.RemoteException;
import javax.ejb.*;
public class ConverterEJB implements SessionBean {
}
3、 在项目的META-INF目录中,确保有两个文
件:ejb-jar.xml和jboss.xml。前者应该已经自动生成了,后者要自己手动添加。内容如下:
u ejb-jar.xml文件内容:
代码4:ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.1"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
</ejb-jar>
u jboss.xml文件内容:
代码4:jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
<jboss>
</jboss>
请注意文件中的<jndi-name>MyConverter</jndi-name>元 素,用到了JNDI绑定,在客户程序中将使用到它。
4、因为用到了JNDI绑定,因此一旦发布到服务器上,你还需要一个jndi.properties文件,以告诉调用你程序的客户端请求到哪里去初始化JNDI naming service。文件内容如下,注意前面以#号开头的是注释。该文件和你的类文件放在同一目录下,即项目的build/classes目录下。
代码5:jndi.properties
# jndi.properties --
#
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
5、 最终的目录结构如下所示:
最终build/classes目录包含三个源文件的class文件、 jndi.properties文件和一个META-INF目录,META-INF目录下包含:ejb-jar.xml和jboss.xml两个文件。
6、将EJB项目打包成jar文件。控制台到的 build/classes目录下,执行:jar cvf Converter.jar .即将该项目打包成Converter.jar。注意命令后面的点,表示将当前目录打包。
7、将Converter.jar复制 到<JBoss-install>/server/default/deploy目录,起动JBoss Server(起动类型默认为Default)。控制台会输出相应提示,如下图所示:
8、编写客户端,这里是一个Java应用程序。我这里新建 了一个Java Project:ejb_client。因为要用到前面的相关类,所以把Converter.jar文件添加到ejb_client项目的Build path中,同时把j2ee.jar也添加进来,客户端就只有一个类:ConverterClient.java,如下所示:
代码6:ConverterClient.java
// ConverterClient.java -- A client class use ConverEJB in project ejb_demo.
// 2006-10-13 13:15
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
public class ConverterClient {