1. 程式人生 > >部署在WildFly上的EJB客戶端,呼叫另一個WildFly上的EJB服務的過程詳解

部署在WildFly上的EJB客戶端,呼叫另一個WildFly上的EJB服務的過程詳解

本文是前一篇博文的繼續,應用的場景如下:

    EJB服務開發完畢後,以ear或jar的方式部署在一個WildFly伺服器上;

    EJB客戶端開發(詳解前一篇博文)完畢後,以war的方式(也可以是另外一個ear)部署在另一個WildFly伺服器上。

對於部署EJB服務的WildFly伺服器,除了前文介紹的新增必要的使用者之外,無需任何額外的設定。

對於部署EJB客戶端的WildFly伺服器,還需要進行如下配置:

1.      將有效使用者的密碼進行base64加密

可以通過通用工具將密碼的明文轉換為密文

2.      建立安全域以傳送使用者認證資訊到EJB伺服器

編輯standlaone-full.xml如下:

<management>

        <security-realms>

            ...

            <security-realmname="ejb-security-realm">

                <server-identities>

                    <secretvalue="dGVzdA=="/>

                </server-identities>

            </security-realm>

        </security-realms>

其中的secret值就是EJB伺服器設定的密碼test的base64密文

3.      建立埠繫結

編輯standlaone-full.xml如下:

<socket-binding-groupname="standard-sockets"default-interface="public"port-offset="${jboss.socket.binding.port-offset:0}">

        ...

        <outbound-socket-bindingname="remote-ejb">

            <remote-destination

host="10.87.140.129"port="8080"/>

        </outbound-socket-binding>

</socket-binding-group>

其中的host就是EJB伺服器的IP,port就是EJB伺服器的埠(預設為8080)

4.      建立遠端連線

編輯standlaone-full.xml如下:

<subsystemxmlns="urn:jboss:domain:remoting:3.0">

....

            <outbound-connections>

                <remote-outbound-connectionname="remote-ejb-connection"outbound-socket-binding-ref="remote-ejb"protocol="http-remoting"security-realm="ejb-security-realm"username="ejb">

                    <properties>

                        <propertyname="SASL_POLICY_NOANONYMOUS"value="false"/>

                        <propertyname="SSL_ENABLED"value="false"/>

                    </properties>

                </remote-outbound-connection>

            </outbound-connections>

</subsystem>

其中的username就是EJB伺服器設定的有效使用者名稱

5.      EJB客戶端的打包及jboss-ejb-client.xml檔案

jboss-ejb-client.xml檔案內容如下:

<jboss-ejb-clientxmlns="urn:jboss:ejb-client:1.2">

    <client-context>

        <ejb-receivers>

            <remoting-ejb-receiveroutbound-connection-ref="remote-ejb-connection"/>

        </ejb-receivers>

    </client-context>

</jboss-ejb-client>

對於EAR打包方式,jboss-ejb-client.xml檔案位於META-INF/jboss-ejb-client.xml。

對於WAR打包方式,jboss-ejb-client.xml檔案位於WEB-INF/jboss-ejb-client.xml。


至此完成所有配置,重啟 EJB客戶端所在的WildFly伺服器,即可看到EJB呼叫的日誌資訊。

參考文獻:

https://docs.jboss.org/author/display/WFLY10/EJB+invocations+from+a+remote+server+instance