剛剛開始學習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="
xmlns:xsi="
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
《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
大鳥 閱讀(459)
評論(0) 編輯 收藏 所屬分類:
JAVA 、
WEB