1. 程式人生 > >Java EE 遠端客戶的訪問EJB實現例項(Jboss wildfly)

Java EE 遠端客戶的訪問EJB實現例項(Jboss wildfly)

例項與上一篇GlassFish一致,應用伺服器換成wildfiy主要介紹差異部分。

2.建立管理員和使用者, 解壓縮wildfly-10.0.0.Final,在解壓後的資料夾中wildfly-10.0.0.Final\bin 下執行add-user,參考文件進行操作

3.NetBeans伺服器中新增伺服器->WildFly 應用伺服器->選擇解壓資料夾->使用預設埠和ip

4.修改CCEnterpriseApplication專案屬性->執行->伺服器選擇WildFly 應用伺服器,修改CCEnterpriseApplication-ejb,CCEnterpriseApplication-war 伺服器改成WildFly 應用伺服器

5.修改CCClient庫,去除gf-client.jar ,新增 jboss-client.jar (wildfly-10.0.0.Final\bin\client 資料夾下)

6.修改客戶端連線程式碼,需要用第4種連線方式,前面三種都不行,Context的引數也發生變化,根據wildfly文件進行修改,使用者名稱密碼是步驟2時建立的,Application User 就可以了。

  try {         
             Date d = new Date();
            Hashtable env = new Hashtable();
            //GlassFish
         //  env.put("org.omg.CORBA.ORBInitialHost", "localhost");
         //  env.put("org.omg.CORBA.ORBInitialPort", "3700");  
           //Jboss 
           env.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
           env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.remote.client.InitialContextFactory");
           env.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
           env.put(Context.SECURITY_PRINCIPAL,"user");//使用者名稱
           env.put(Context.SECURITY_CREDENTIALS, "user");//密碼
           env.put("jboss.naming.client.ejb.context", true);
           Context  context = new InitialContext(env);           
           Logger.getLogger(LoginJFrame.class.getName()).log(Level.WARNING,String.valueOf(new Date().getTime()-d.getTime()));
            /**
             * 1."cc.test.ejb.CCSessionBeanRemote"
             * 2.CCSessionBeanRemote.class.getName()
             * 3.java:global/CCEnterpriseApplication/CCSessionBean
             * 4.CCEnterpriseApplication/CCEnterpriseApplication-ejb/CCSessionBean!cc.test.ejb.CCSessionBeanRemote"
             * 
             */
            CCSessionBeanRemote ccSession = (CCSessionBeanRemote)context.lookup("CCEnterpriseApplication/CCEnterpriseApplication-ejb/CCSessionBean!"+CCSessionBeanRemote.class.getName());
            Logger.getLogger(LoginJFrame.class.getName()).log(Level.WARNING,String.valueOf(new Date().getTime()-d.getTime()));
            this.messageLabel.setText(ccSession.checkConn());
            Logger.getLogger(LoginJFrame.class.getName()).log(Level.WARNING,String.valueOf(new Date().getTime()-d.getTime()));
            CCSessionBeanRemote ccSession2 = (CCSessionBeanRemote)context.lookup("CCEnterpriseApplication/CCEnterpriseApplication-ejb/CCSessionBean!"+CCSessionBeanRemote.class.getName());
            Logger.getLogger(LoginJFrame.class.getName()).log(Level.WARNING,String.valueOf(new Date().getTime()-d.getTime()));
        } catch (NamingException ex) {
            Logger.getLogger(LoginJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }

7.在NetBeans 中啟動WildFly伺服器,部署CCEnterpriseApplication 專案,執行CCClient,點選連線按鈕,檢視輸出結果,與GlassFish對比可以發現獲取Context和EJB都很快不到1s就可以完成,Context.lookup時Jboss的提示資訊顯示Remoteing connection資訊已經變了。這個以後看看會不會有其他影響。
run:
五月 29, 2016 4:15:41 上午 org.xnio.Xnio <clinit>
INFO: XNIO version 3.3.4.Final
五月 29, 2016 4:15:41 上午 org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.3.4.Final
五月 29, 2016 4:15:41 上午 org.jboss.remoting3.EndpointImpl <clinit>
INFO: JBoss Remoting version 4.0.18.Final
五月 29, 2016 4:15:41 上午 cc.test.client.LoginJFrame jButton1MouseClicked
警告: 265
五月 29, 2016 4:15:42 上午 org.jboss.ejb.client.remoting.VersionReceiver handleMessage
INFO: EJBCLIENT000017: Received server version 2 and marshalling strategies [river]
五月 29, 2016 4:15:42 上午 org.jboss.ejb.client.remoting.RemotingConnectionEJBReceiver associate
INFO: EJBCLIENT000013: Successful version handshake completed for receiver context EJBReceiverContext{
[email protected]
, receiver=Remoting connection EJB receiver [connection=Remoting connection <a659c6a>,channel=jboss.ejb,nodename=dev-pc]} on channel Channel ID bdc84b3b (outbound) of Remoting connection 54d9e20f to localhost/127.0.0.1:8080 五月 29, 2016 4:15:42 上午 org.jboss.ejb.client.EJBClient <clinit> INFO: JBoss EJB Client version 2.1.4.Final 五月 29, 2016 4:15:42 上午 cc.test.client.LoginJFrame jButton1MouseClicked 警告: 624 五月 29, 2016 4:15:42 上午 cc.test.client.LoginJFrame jButton1MouseClicked 警告: 640 五月 29, 2016 4:15:42 上午 cc.test.client.LoginJFrame jButton1MouseClicked 資訊: 640 五月 29, 2016 4:16:20 上午 cc.test.client.LoginJFrame jButton1MouseClicked 警告: 0 五月 29, 2016 4:16:20 上午 org.jboss.ejb.client.remoting.VersionReceiver handleMessage INFO: EJBCLIENT000017: Received server version 2 and marshalling strategies [river] 五月 29, 2016 4:16:20 上午 org.jboss.ejb.client.remoting.RemotingConnectionEJBReceiver associate INFO: EJBCLIENT000013: Successful version handshake completed for receiver context EJBReceiverContext{[email protected], receiver=Remoting connection EJB receiver [connection=Remoting connection <2f223c50>,channel=jboss.ejb,nodename=dev-pc]} on channel Channel ID af345337 (outbound) of Remoting connection 674abfe5 to localhost/127.0.0.1:8080 五月 29, 2016 4:16:20 上午 cc.test.client.LoginJFrame jButton1MouseClicked 警告: 62 五月 29, 2016 4:16:20 上午 cc.test.client.LoginJFrame jButton1MouseClicked 警告: 62 五月 29, 2016 4:16:20 上午 cc.test.client.LoginJFrame jButton1MouseClicked 資訊: 62

總結一下,從WildFly和GlassFish EJB的遠端方法呼叫可以發現,跟官方檔案差別還是有的,從EJB lookup 的路徑可以發現,GlassFish 是一個remote對應一個EJB,WildFly是一個專案下面一個remote可以對應多個EJB。一個remote有多個實現是很正常,但是遠端方法呼叫我也不需要知道到底是哪個來實現的,對寫程式碼都沒影響。還有一處client端的jar包問題,WildFly比較簡單,一個單獨的jar檔案就可以了,GlassFish 側重在Server Container 的概念,在與伺服器同一臺機子會比較簡單,一但到實際分發的時候就比較麻煩,因為引入的jar包裡面都是關聯到其他jar包的。實際jar是空的,可以檢視官方文件關於釋出的介紹,使用方式是package-appclient ,以後再詳細說明。


WildFly 文件EJB remote client 具體頁面

相關推薦

Java EE 遠端客戶訪問EJB實現例項(Jboss wildfly)

例項與上一篇GlassFish一致,應用伺服器換成wildfiy主要介紹差異部分。 2.建立管理員和使用者, 解壓縮wildfly-10.0.0.Final,在解壓後的資料夾中wildfly-10.0.0.Final\bin 下執行add-user,參考文件進行操作 3.

java ee web頁面進度條實現

背景 有些操作花費的時間會比較長,常見的有,批量操作,批量上傳/下載等,進度條能很大程度的提升使用者的體驗。但是作為B-S架構的web程式該如何實現呢? 思路:先定義一個進度統計器,通過redis來

[原始碼和文件分享]基於Android Studio實現的論壇網站Android客戶端和JAVA EE後臺

第一章 概述 1.1 開發環境 本安卓程式在Windows 10系統下使用Android Studio開發,後臺使用MyEclipse開發,測試環境為安卓系統5.1、4.4、4.3、5.0,螢幕尺寸5.0、5.1、5.5的安卓手機。 1.2 安裝配置 本安卓程式要求安卓SDK為API

使用MyEclipse開發Java EE應用:用XDoclet創建EJB 2 Session Bean項目(三)

str 文件存儲 字段 des 管理 新版 enter ecif class MyEclipse限時秒殺!活動火熱開啟中>> 【MyEclipse最新版下載】 三、配置XDoclet支持的項目 默認情況下,MyEclipse EJB項目未配置使用XDocle

使用MyEclipse開發Java EE應用:EJB項目開發初探(上)

編輯器 應用服務器 工具 xdoclet 屬性 ctu xdoc 直接 project 你開學,我放價!MyEclipse線上狂歡繼續!火熱開啟中>> 【MyEclipse最新版下載】 一、MyEclipse EJB開發工具 Enterprise Java

使用MyEclipse開發Java EE應用:EJB項目開發初探(下)

計時 包含 devel 開啟 有關 中文 ren 向導 all 你開學,我放價!MyEclipse線上狂歡繼續!火熱開啟中>> 【MyEclipse最新版下載】 三、EJB 3.x項目中的持久性支持 當創建EJB 3.x項目時,作為選項您可以添加JPA支持。

Spring boot 配置https 實現java通過https介面訪問

      近來公司需要搭建一個https的伺服器來除錯介面(伺服器用的spring boot框架),剛開始接觸就是一頓百度,最後發現網際網路認可的https安全連結的證書需要去CA認證機構申請,由於是除錯階段就採用了java的keytool工具來生成金鑰檔案

阿里雲部署django實現公網訪問 SSH實現遠端控制 linux rhel7下安裝python django初探-建立簡單的部落格系統(一) django初探-建立簡單的部落格系統(二)

  本博的主要目的是對阿里雲部署django實現公網訪問進行一次簡單的記錄,方便日後查詢。   內容目錄:   (1)申請阿里雲伺服器及安全組配置   (2)實現ssh遠端控制   (3)實現ftp檔案傳輸   (4)安裝python3,在centos下同時使用python2和python3   

JAVA RPC遠端呼叫伺服器實現使用者登入、註冊

先來百科掃盲 : 什麼是 RPC(反正我也剛看的) RPC(Remote Procedure Call)—遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間攜帶資訊資料。在OSI

Java 抽象類可以間接實現例項化,無法直接例項

抽象類無法直接例項化, 它的例項化方式並不是通過普通的new方式來建立物件,而是通過父類的應用來指向子類的例項間接地實現父類的例項化,因為子類在例項化之前,一定會先例項化它的父類。這樣建立了繼承抽象類的子類物件,也就把其父類(抽象類)給例項化了。 注意:介面與抽象類非常類似,但是它不可以被例項化

SWUST--Java實驗(七) 客戶端與伺服器聊天實現

import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorde

Java開發後臺介面+Android開發客戶端的一個例項(學生成績管理)(一)

本文主要是一個查詢學生成績的一整套系統,主要為功能實現,串聯起來後端和移動端的連線。UI後期可以根據自己的愛好再調整,這裡分為兩部分進行介紹: 1、使用Java開發後臺介面,使用現如今非常流行的SpringBoot框架,使用MySql資料庫,持久層框架使用MyBatis,後臺開發平臺為idea,

JAVA之FileNameFilter兩種實現例項程式碼

0 引言 在學習流和檔案時發現檔案的過濾器只寫出了一種實現方式,即匿名類的實現。也可以通過實現FileNameFilter介面的方式完成過濾,特此以作記錄。 1 例項程式碼 1.1 匿名類的實現 package com.dh.ch08;/* @author c

【嘔心瀝血 感謝孟歡】資料庫操作java實現例項 封裝為函式

實驗要求: 在安裝配置好資料庫Mysql後,需要使用Java程式設計完成如下任務: (1)建立資料庫表users,欄位分別為username(主鍵,varchar(10))、pass(varchar(8));資料庫表person,欄位按分別為username(varcha

【centos7】設定Redis外網可訪問,通過java程式遠端訪問Redis

一、設定Redis外網可訪問 1、開放埠6379 firewall-cmd --zone=public --add-port=6379/tcp --permanent 我這裡的警告資訊是,埠6379已開通。 檢視開放埠:firewall-cmd --zone=public -

誇伺服器遠端客戶訪問hbase叢集需要開通的防火牆

問題:hbase客戶端訪問hbase叢集需要怎麼申請開通防火牆? 場景:誇伺服器遠端客戶端訪問hbase叢集需要開通的防火牆和注意事項? 答案: 1)hbase叢集的所有zookeeper伺服器和埠,一般埠預設為2181 2)hbase叢集的所有hmaster伺服器和埠。

Apache Apollo 服務端搭建與mqtt客戶端(java)訂閱、釋出的實現

注意:本部落格純屬娛樂,不接受任何批評!一、Apache Apollo伺服器搭建:       略。       搭建好後訪問http://localhost:61680  登入賬號密碼:admin/password,然後熟悉下頁面。二、java版客戶端實現訂閱與釋出    

OpenVPN 實現跨網路遠端桌面訪問

1 場景需求: 本公司系統執行在客戶現場的Windows server環境,負責採集資料,並進行資料分析工作,展示層在雲端Linux伺服器部署,之間通過OpenVPN建立連線。也就是訪問資料採集端的伺服器必須通過雲端的Linux系統。 由於現場工程師對於Linux環境不

java做伺服器,android做客戶端,實現資料傳輸

許久未動筆,有個小專案開始動工。 需要用一臺windows電腦做伺服器,在android端與其進行資料交換,實現一些業務。 簡單起見,用java寫這個伺服器,以前沒做過,試試水。很簡單的程式碼,純粹找思路。 伺服器端程式碼: package com.test; impor

JAVA EE 專案常用知識 之AJAX技術實現select下拉列表聯動的兩種用法(讓你真正理解ajax)

ajax 下拉列表聯動的用法。 ajax的定義: AJAX 是一種用於建立快速動態網頁的技術。 通過在後臺與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。 ajax效果的一個例子: 區域為