EJB環境配置(jboss-as-7.1.1+jdk1.8+eclipse)並編寫第一個EJB程式
文章目錄
- 一、環境配置
- 寫在前面
- 下載jboss-as-7.1.1.final並配置環境變數
- 如果你是jdk1.8,那麼安裝jdk1.7並修改standlone.bat
- 在eclipse中安裝JBoss Tools開發外掛
- eclipse配置
- 二、第一個EJB程式
- 另外需要注意的地方
一、環境配置
寫在前面
jdk1.8和jboss-as-7.1.1並不相容(儘管在網上找到了有說不需要換jdk的方法,但是至少我是失敗了),這裡的內容是:在不改變其他專案使用jdk1.8的情況下,對jboss專案使用jdk1.7.
下載jboss-as-7.1.1.final並配置環境變數
配置環境變數:(右鍵我的電腦-屬性-高階系統設定-環境變數)
1、在“系統變數”裡新增JBOSS_HOME變數,值為Jboss的路徑。例如我的路徑在D盤根目錄下,則值為D:\jboss-as-7.1.1.Final。
2、在path變數中新增:%JBOSS_HOME%\bin
驗證是否配置成功:
1、開啟jboss-as-7.1.1.Final下的子目錄bin,執行standlone.bat,啟動JBoss伺服器。注意不是執行run.bat。
2、JBoss伺服器啟動完畢之後,開啟瀏覽器並輸入地址http://localhost:8080, 如出現JBoss歡迎頁面,則表示JBoss安裝並執行成功;
如果你是jdk1.8,那麼安裝jdk1.7並修改standlone.bat
如果是jdk1.8的話,點選standlone.bat,會卡在JBoss AS 7.1.1.Final “Brontes” starting。
1、下載jdk1.7並安裝:網盤連結 提取碼:0jv1
注意不需要為jdk1.7配環境
2、修改standlone.bat,下圖第60行修改為 set "JAVA=你的jdk7安裝路徑(在安裝時選擇的那個)\bin\java"
在eclipse中安裝JBoss Tools開發外掛
Help -> Eclipse Marketplace -> 搜尋jboss,如下圖,點選右下角install
如果在search這裡沒有找到的話,那麼這裡的第三欄popular中也應該有它。
在彈出的視窗中選擇[JBossASTools],點選按鈕[Confirm],接著在安裝許可協議視窗中選擇accept,然後finish等它自動下載(需要聯網)
eclipse配置
1、Window -> preferences -> Java -> installed JREs -> add,跳出的視窗點選next,會如下圖所示:
圖中的JRE name取個你自己能分辨出來哪個版本的就行,JRE home還是填jdk安裝目錄,和之前修改的standlone.bat中的路徑一致。
2、依舊是Window -> preferences,然後找到server -> Runtime Environment -> add -> jboss7.1 -> next
注意下圖框起來的地方:
Home Directory使用的是jboss的路徑,和前面JBOSS_HOME的值相同
Runtime JRE這裡需要選擇剛才在 installed JREs那裡設定的那個名稱(希望你還記得)
二、第一個EJB程式
編寫EJB工程
1、file -> new -> EJB project,這裡我就叫它HelloEJB了,注意這裡選擇一下Target Runtime,不選的話就只能去build path裡面加了
2、右鍵專案名新增包,這裡我的包叫com.hello.ejb,右鍵包名 -> new -> session bean
這裡我叫它Hello,(ps:下圖中的stateless意為無狀態,選擇stateful則為有狀態
3、finish之後我們看到這個包下生成了一個Hello.java和它的remote介面HelloRemote.java
HelloRemote.java:
package com.hello.ejb;
import javax.ejb.Remote;
@Remote
public interface HelloRemote {
public String hello(String s);
}
Hello.java:
package com.hello.ejb;
import javax.ejb.Stateless;
/**
* Session Bean implementation class Hello
*/
@Stateless
public class Hello implements HelloRemote {
/**
* Default constructor.
*/
public Hello() {
// TODO Auto-generated constructor stub
}
public String hello(String s) {
return "hello " + s;
}
}
將工程部署到JBoss伺服器
右鍵工程名選擇export -> EJB jar file,顯示如下圖所示
Browser選擇路徑為jboss目錄下的standalone\deployments資料夾
非常重要的一點!!!如果程式碼有改動,那麼需要重新部署,也就是重新export,不然你的客戶端不會知道改動的!!
編寫客戶端工程
就建一個普通的java project,這裡我們叫它HelloEJB-Client
新建包com.hello.ejb和com.hello.ejb.client
1、把剛才EJB工程檔案中的HelloRemote複製到com.hello.ejb下
2、右鍵專案名-build path,匯入jboss-client.jar包
3、在com.hello.ejb.client下新建java類HelloClient.java
package com.hello.ejb.client;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.hello.ejb.HelloRemote;
public class HelloClient {
private static HelloRemote lookupRemoteStatelessEjbBean() throws NamingException{
final Hashtable jndiProperties = new Hashtable();
jndiProperties.put("jboss.naming.client.ejb.context", true);
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
final Context context = new InitialContext(jndiProperties);
final String appName = "";
//moduleName是EJB工程名
final String moduleName = "HelloEJB";
final String distinctName = "";
//beanName是EJB工程下的sessionBean名
final String beanName = "Hello";
final String viewClassName=HelloRemote.class.getName();
//如果EJB工程下的sessionBean是有狀態的,則後面還需要加`+"?stateful"`
final String namespace = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName;
return (HelloRemote) context.lookup(namespace);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//查詢目錄
HelloRemote hello = lookupRemoteStatelessEjbBean();
System.out.println(hello);
String s = hello.hello("EJB");
System.out.println(s);
}catch(NamingException e){
e.printStackTrace();
}
}
}
4、jboss-ejb-client.properties檔案(放在src目錄下
注意這裡port是4447 但是jboss6及以前版本應該是1099
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=127.0.0.1
remote.connection.default.port=4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
啟動伺服器,執行程式
servers當中啟動Jboss7,如下圖
啟動成功後將會看到:
整體目錄結構
另外需要注意的地方
當客戶端程式是web工程時一定要右鍵工程名-properties-java compiler 改成1.7版本的,不然會報錯。