刚刚开始学习JBoss,学习了一个入门级的小例子,对于刚接触JBoss和Eclipse的菜鸟来说很有帮助的,现在把我的试验过程介绍一下。
首先,打开Eclipse,新建——其它——JBoss IDE——J2EE Projects——J2EE 1.4 Projects
下一步
填入项目名称:HelloWorld
项目内容可以选择使用缺省值或者自己制定存储空间
下一步
在源选单下,添加文件夹,分别命名为j2src(存放java文件)和src(存放部署文件),缺省输出文件夹改为:HelloWorld/bin
完成
在包资源管理器中,右键单击j2src,选择新建——包,输入包名:sample.server。
右键单击sample.server,选择新建——接口,输入接口名字:HelloWorld,此为远程接口,是指对于客户端而言所能看到的调用接口,该接口内容为:
/**
*HelloWorld.java
*/
package sample.server;
import javax.ejb.EJBObject;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public interface HelloWorld extends EJBObject {
public String hello() throws java.rmi.RemoteException;
}
同样的,新建Home接口HelloWorldHome,我们可以把Home接口看做是一个制造EJB的工厂,它告诉EJB容器:“我的客户要我生成一个EJB,现在我把这个任务交给你啦!”
/**
* HelloWorldHome.java
*/
package sample.server;
import javax.ejb.EJBHome;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public interface HelloWorldHome extends EJBHome {
HelloWorld create() throws java.rmi.RemoteException,
javax.ejb.CreateException;
}
下面就是EJB的实现,右键单击sample.server,新建——其它——JBoss IDE——EJB Components——Session Bean,输入名称:HelloWorldBean,类型为Stateless,Remote,选择创建来自超类的构造函数,继承的抽象方法,ejbCreate() method。完成。
/**
* HelloWorldBean.java
*/
package sample.server;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
/**
* @ejb.bean name="HelloWorld"
* display-name="Name for HelloWorld"
* description="Description for HelloWorld"
* jndi-name="ejb/HelloWorld"
* type="Stateless"
* view-type="remote"
*/
public class HelloWorldBean implements SessionBean {
/**
*
*/
public HelloWorldBean() {
super();
// TODO 自动生成构造函数存根
}
/* (非 Javadoc)
* @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
*/
public void setSessionContext(SessionContext ctx)
throws EJBException,
RemoteException {
// TODO 自动生成方法存根
}
/* (非 Javadoc)
* @see javax.ejb.SessionBean#ejbRemove()
*/
public void ejbRemove() throws EJBException, RemoteException {
// TODO 自动生成方法存根
}
/* (非 Javadoc)
* @see javax.ejb.SessionBean#ejbActivate()
*/
public void ejbActivate() throws EJBException, RemoteException {
// TODO 自动生成方法存根
}
/* (非 Javadoc)
* @see javax.ejb.SessionBean#ejbPassivate()
*/
public void ejbPassivate() throws EJBException, RemoteException {
// TODO 自动生成方法存根
}
/**
* Default create method
*
* @throws CreateException
* @ejb.create-method
*/
public void ejbCreate() throws CreateException {
// TODO Auto-generated method stub
}
public String hello()
{
System.out.println("hello()");
return "Hello,world";
}
}
服务器端程序编好,下一步就要做部署工作了。
右键选择src,新建目录META-INF,在该目录下,新建——其它——JBoss-IDE——Descriptors——EJB 2.1 Deployment Descriptor,默认名字为ejb-jar.xml,完成。
ejb-jar.xml:
《?xml version="1.0" encoding="UTF-8"?》
《ejb-jar version="2.1"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"》
《ejb-jar》
《enterprise-beans》
《session》
《ejb-name》HelloWorldBean《/ejb-name》
《home》sample.server.HelloWorldHome《/home》
《remote》sample.server.HelloWorld《/remote》
《ejb-class》sample.server.HelloWorldBean《/ejb-class》
《session-type》Stateful《/session-type》
《transaction-type》Bean《/transaction-type》
《/session》
《/enterprise-beans》
《/ejb-jar》
(备注:在此,由于网页显示的原因,将<>符号改成了《》,所以,在实际应用中应改为<>,以正常工作。同时,ejb-jar.xml开头的版本标记文字会因jboss版本不同而不同,希望大家注意)
这样我们就完成了一个简单的会话EJB的编写,下一步是打包。
同时选择j2src和src两个目录,右键单击选择导出——jar——选择导出目标,可以放在定义的HelloWorld目录下,起个名字叫HelloWorld.jar,则会在包资源管理器中看到一个文件HelloWorld.jar。
光有EJB,没有客户端,对我们来说毫无用处,所以下一步我们就要编写客户端程序。
同样的,在j2src下创建包sample.client。
在该包下新建类,类名为HelloWorldClient,添加接口:sample.server.HelloWorld,
/**
* HelloWorldClient.java
*/
sample.server.HelloWorldHome。
package sample.client;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import sample.server.HelloWorld;
import sample.server.HelloWorldHome;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class HelloWorldClient{
public static void main(String [] args){
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL,"localhost:1099");
/**
* 默认是把服务器端EJB部署在本机上,如果部署在其它机器上,比如192.168.0.1,则将localhost * 改为192.168.0.1即可
*/
env.put("Java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
try{
Context ctx = new InitialContext(env);
Object obj = ctx.lookup("HelloWorldBean");
HelloWorldHome home =(HelloWorldHome)javax.rmi.PortableRemoteObject.narrow(
obj, HelloWorldHome.class );
HelloWorld helloWorld = home.create();
System.out.println(helloWorld.hello());
helloWorld.remove();
}catch(Exception e){
e.printStackTrace();
System.out.println("Exception:"+e.getMessage());
}
}
}
下面就可以编译运行了。
手动启动JBoss,直接运行JBoss\bin\目录下的run.bat即可,这个过程时间长短跟计算机的配置有关,配置高的计算机几秒钟就可以了,比较传统的计算机则需要等上1分多钟甚至更长,不过你不需要专门等着它的运行,你双击run.bat后,不用管它,你可以先做一些其他的事情,比如给mm发条短信啊什么的,等你发完短信后,你会发现JBoss已经运行成功,并会告诉你启动JBoss花了多长时间:Started in 1m:36s:870ms,呵呵,我的机器比较传统哈。
选择包资源管理器中的HelloWorld.jar,右键单击选择Deployment——Deploy to,
选择jboss 4.0(default)[file:/D:/jboss4/server/default/deploy/]
则系统会自动把HelloWorld.jar文件拷贝到jboss的/server/default/deploy/目录下,jboss的运行窗口将出现
10:09:50,679 INFO [EjbModule] Deploying HelloWorldBean
10:09:52,051 INFO [org.jboss.ejb.EJBDeployer] Deployed: file:/D:/jboss4/server/default/deploy/HelloWorld.jar
服务器端运行成功
右键选择HelloWorldClient.java,选择运行——运行,在左边选择java应用程序下的HelloWorldClient,右边选择类路径,在引导程序条目下添加外部JAR,分别jboss的client目录下的jboss-j2ee.jar、log4j.jar、jboss-client.jar。然后单击运行,就会看到底下控制台上显示的“Hello,World”,哈哈,成功了,这可跟一般的“HelloWorld”不太一样哦。
posted on 2008-05-30 15:52
大鸟 阅读(437)
评论(0) 编辑 收藏 所属分类:
JAVA 、
WEB