簡體   English   中英

在沒有JSP / Servlet作為中介的情況下,如何從另一台計算機上的獨立客戶端調用通過Internet在遠程計算機上運行的EJB?

[英]How to call EJB running on remote machine over internet from standalone client on another machine without JSP/Servlet as intermediate?

案例:開發一個獨立的Java客戶端,該客戶端將在多個用戶桌面上的不同位置上運行。 應用服務器(Oracle Weblogic)將在不同位置的集中位置運行。

現在,我想從客戶端訪問/調用在中央服務器上運行的EJB(會話Bean)。 由於客戶端和服務器位於不同的位置,並且未通過Intranet或LAN連接,因此唯一的連接介質是Internet。

我的問題是如何在不使用servlet / JSP層之間的情況下直接從客戶端在服務器中調用EJB?

EJB是為遠程訪問而設計的,為什么要有servlet依賴關系?

我已經讀過RMI-IIOP可以用來建立這種類型的連接,但是我無法通過Internet使用RMI-IIOP!

這種遠程通信的最佳架構/解決方案是什么?

請記住,EJB是商務邏輯的精簡單元,它們與協議無關。 將其暴露給調用方是應用程序服務器的工作。 RMI-IIOP / CORBA只是默認設置。

IIOP的Internet路由問題與許多協議相似,不是因為它們沒有通過Internet路由,而是因為它們沒有內置的簡單代理/反向代理功能。因此,存在通過DMZ的問題。 與具有反向代理支持的HTTP相比,或SMTP允許中繼。 防火牆端口通常也處於關閉狀態。您通常不會將應用程序服務器放置在DMZ中。

為了解決直接訪問外部網絡業務邏輯的問題,我通常將協議更改為為外部網絡通信設計的協議。 例如,使用@WebMethod注釋(或部署描述符)EJB,並且EJB自動成為SOAP服務,或者使用@PATH(等)將它們公開為HTTP / JSON / XML服務。

CORBA類型協議具有用於安全性,XA事務的開箱即用功能,並且具有很高的性能。 我通常在內部將其用於面向企業級組件的系統。 (每個EJB組件本質上都用作微服務)在進行外部集成時,尤其是在調用者不需要預先了解接口協定的情況下,我通常使用EJB的SOAP或HTTP / JSON / XML端點。

沒有servlet依賴性。 應用服務器特定於自定義客戶端/協議。 每個服務器都有自己的建立連接的方式,通過為適當的提供程序和協議處理程序配置JNDI來體現。

為什么RMI-IIOP無法通過Internet工作? 我可以看到的唯一潛在問題是安全性,我不知道是否有RMI-IIOP的加密版本,但是除此之外,它是一個可路由的完美協議。

您可能會遇到端口和防火牆問題,但這不是協議故障。 如果您想通過端口80(http的端口)運行RMI-IIOP,那很好(顯然,它不是http,也不能與http代理一起使用,但這又不是協議問題)。

Weblogic也有(有嗎?)自己的協議T3? 我認為是嗎? 你可以用嗎?

我認為關鍵是為什么您不認為可以在“ Internet”上運行RMI-IIOP,並試圖解決該問題,而不一定要使用哪種協議。

RMI / IIOP是應用程序服務器提供的默認值。 通過配置/注釋,可以改為使用SOAP或HTTP / XML / JSON。 (盡管這些協議在安全性,交易等方面都有一定的取舍)

好的,EJB完全不依賴servlet。 可以使用RMI / IIOP直接調用它們。 您必須面對的唯一問題是網絡結構,我的意思是RMI / IIOP使用一些通常在公司防火牆中未打開的端口,打開它們可能非常困難。 因此通常最好發出HTTP請求,因為幾乎所有的防火牆都接受這種請求。

因此,如果您在Intranet中(客戶端和服務器在同一Intranet中),則可以使用RMI / IIOP,但是如果您的客戶端和服務器通過Internet連接位於不同的網絡中,那么我建議您使用HTTP。 您可以使用Web服務並將EJB作為Web服務“導出”。 如果您不想使用Web服務,則可以將接收HTTP請求並調用EJB的servlet作為極值實現。 這取決於您必須返回給客戶端的對象的類型。 如果它是一個簡單的字符串或不太復雜的東西,那么您甚至可以使用Servlet,但是如果它們是對象,那么Servelt解決方案不是正確的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM