【EJB系列】(一)——JBOSS7中開發一個簡單的EJB應用

來源:互聯網
上載者:User
導讀

  在本篇文章中你將瞭解到如何使用JBOSS7開發出一個簡單的EJB應用以及在這個過程中遇到的問題。 環境

MyEclipse10
JBOSS7
JDK1.8.0 準備 MyEclipse10中配置JBOSS7 瞭解JBOSS目錄結果

首先瞭解一下JBOSS7的目錄結構,和之前的版本不一樣
在 JBoss 7 中,檔案系統分為兩部分:
1. 獨立伺服器standalone
2. 網域服務器domain (這是 JBoss 7 首次引入的) — 用於統一的管理多個執行個體

      

bin: 包含啟動的指令碼,用來啟動獨立伺服器(如果使用獨立執行個體的話)或者域(使用網域服務器)

docs: 包含伺服器文檔,有兩個子目錄,分別是 licenses (licenses.xml 和相關內容) 和 Schema (配置所使用的 .xsd 檔案)

domain: 包含域結構,有子目錄組成:configuration (包含域的設定檔), data (包含發行模組的內容檔案夾), lib(用於支援 Java EE 擴充) tmp (臨時目錄).

standalone: 結構和 Domain 檔案夾相同

modules: 因為 JBoss 7 是一個模組化的伺服器,應用伺服器的模組對應這裡的一個子目錄。 配置JBOSS

    配置JDK

    運行JBOSS

   開發EJB 建立EJB Project

    編寫介面和實現

           介面

package com.tgb.ejb;public interface FirstEjb {    String saySomething(String name);}
實現
package com.tgb.ejb;import javax.ejb.Remote;import javax.ejb.Stateless;@Stateless@Remotepublic class FirstEjbBean implements FirstEjb {    @Override    public String saySomething(String name) {        // TODO Auto-generated method stub        return "你好"+name;    }}
加入註解

上面的註解表示是無狀態的會話Bean(@Stateless)以及要通過遠程方式調用(@Remote)。 部署到JBOSS中並運行

       開發用戶端 建立一個JavaProject 將用戶端和要調用的EJB建立聯絡 打包介面

在FirstEjb上右擊,選擇Export,並打包到ejb_01_client項目中

      將打包好的jar包配置到用戶端

      添加調用EJB需要依賴的jar包到用戶端

jar包在jboss安裝路徑下的bin\client中jboss-client.jar 編寫用戶端

package com.tgb.ejb;import java.util.Hashtable;import javax.naming.Context;import javax.naming.InitialContext;public class FirstEjbClient {    public static void main(String[] args)throws Exception{        //JBOSS6,7之前        /*InitialContext context=new InitialContext();        FirstEjb firstEjb=(FirstEjb)context.lookup("FirstEjbBean/remote");        String s=firstEjb.saySomething("許晨陽");        System.out.println(s);*/        final Hashtable jndiProperties = new Hashtable();        jndiProperties.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");//讓JNDI API知道是由誰來管理我們用來尋找JNDI 名字的命名空間的。        final Context context = new InitialContext(jndiProperties);        //appName 和 moduleName分別就打包的格式而定        //如果是.ear就是appName,其它的是moduleName(.jar,.war)        final String appName = "";        final String moduleName = "ejb_01";        final String distinctName = "";        //實作類別名        final String beanName = "FirstEjbBean";        System.out.println(beanName);        //介面類名        final String viewClassName = FirstEjb.class.getName();        System.out.println(viewClassName);        String jndi = "ejb:" + appName + "/" + moduleName + "/"                + distinctName + "/" + beanName + "!" + viewClassName;        System.out.println(jndi);        FirstEjb firstEjb = (FirstEjb) context.lookup(jndi);        String s= firstEjb.saySomething("許晨陽");        System.out.println(s);    }}
編寫設定檔jboss-ejb-client.properties

告訴用戶端EJB在哪

endpoint.name=client-endpointremote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=falseremote.connections=default remote.connection.default.host=127.0.0.1 remote.connection.default.port = 4448remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=falseremote.connection.default.username=saremote.connection.default.password=sa
運行用戶端

      總結

1.在jboss-ejb-client.properties中配置host和port

remote.connection.default.host=127.0.0.1 remote.connection.default.port = 4448

開始host的配的是“localhost”,結果運行用戶端報錯:
WARN: Could not register a EJB receiver for connection to remote:localhost
所以改成了“127.0.0.1”;

連接埠號碼要根據JBOSS的standalone.xml檔案中的配置,預設是4447,我的改成了4448。

在這個過程中發現自己對standalone中的一些配置不是很清楚。可參考一下JBoss配置指南(三)

2.用戶端代碼中appName等的含義

appName:如果部署到伺服器的是一個.ear包,那麼app-name就為除去尾碼.ear之後的包名。如果部署的是.war包或普通的.jar包,那麼appName留空即可,我自己這個工程是以.jar包部署的,所以appName為空白。

moduleName:此處就是部署到伺服器上.war包或.jar包的名字,注意,moduleName不可為空。

distinctName:這是一個可選的用於指定在JBoss AS7上具體的部署配置的一個參數名,不需要使用的話,留空即可,此處我們留空。

beanName:這是我們要使用lookup尋找擷取的Bean,這個項目中為FirstEjbBean,即FirstEjb的實現Bean,無需全限定類名,beanName不可為空。

最後我們拼接處的路徑是
ejb:/ejb_01//FirstEjbBean!com.tgb.ejb.FirstEjb
如果是有狀態的EJB,那麼拼接的字串後面還要加上“。stateful”。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.