[英]Invoking EJB 3.1 session Bean using remote standalone client
盡管我以前使用過EJB,但是我想再次向自己保證我了解它的真正工作原理。
因此,我創建了一個簡單會話Bean EJB(3.1),並將其打包為.ear(也具有客戶端jar)。 以下是代碼段:
package com.example;
import javax.ejb.Stateless;
@Stateless
public class FirstSessionEJB implements FirstSessionEJBRemote {
public FirstSessionEJB() {
}
@Override
public String print() {
return "Hello";
}
}
package com.example;
import javax.ejb.Remote;
@Remote
public interface FirstSessionEJBRemote {
public String print();
}
我將此EJB部署為.ear,並將其成功部署到Wildfly 10.x
。
現在,我想使用在單獨的JVM中運行的獨立Java客戶端來訪問它。
package com.example.main;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.example.FirstSessionEJBRemote;
public class Main {
public static void main(String[] args) throws NamingException {
String GLOBAL_JNDI_NAME="java:global/FirstEJBProjEAR/FirstEJBProj/FirstSessionEJB!com.example.FirstSessionEJBRemote";
Hashtable<String,String> jndiProperties = new Hashtable<>();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
InitialContext ic = new InitialContext(jndiProperties);
FirstSessionEJBRemote ejbRemote = null;
ejbRemote = (FirstSessionEJBRemote)ic.lookup(GLOBAL_JNDI_NAME);
ejbRemote.print();
}
}
我提到這個就怎么做JNDI查找鏈接(什么在所有參數使用,但它無法正常工作。)
在鏈接中提到它具有特定於Wildfly的jar,無需JNDI查找即可工作。
誰能幫我理解:
1)查找需要為JNDI設置的所有屬性是什么?
2)客戶端應用程序中是否需要存在任何特定的jar?
我不想使用任何特定的Wildfly jar,也就是說,我想使用傳統的JNDI查找,所以有人可以指導我嗎?
僅僅編寫一個簡單的“ Hello world”類型的EJB感到非常沮喪。 我指的是一些不錯的書,但是它們提供的只是“查找”代碼,而沒有實際告訴JNDI需要包括所有屬性以及要包含的任何jar。
當您鏈接到文章的各州時,盡管隱藏在那堆文字中,但您確實需要在Wildfly服務器安裝(bin / client / jboss-client.jar)中找到的jboss-client.jar; 它必須在客戶端的運行時類路徑上。 它包含從代碼中引用的org.jboss.ejb.client.naming包開始。
該jar包含了一些額外的魔力,使客戶端能夠使用Wildfly服務器設置和維護EJB遠程調用,只是使用JNDI不會減少它。 而且沒有一個罐可以將它們全部統治,每個容器(Wildfly,Glassfish,Weblogic等)都有自己的客戶端庫實現。
請注意,從客戶端應用程序調用EJB是非常古老的做法(請閱讀:您不想這樣做)。 EJB技術的更現實和現代的觀點是在企業容器本身中使用它,例如從Web應用程序/戰爭中使用-例如,作為RESTful服務的一部分。 您可能甚至不需要EAR文件的額外層,您可以將所有內容整齊地打包到一個war應用程序中。
在那種情況下,如果您確實有一個客戶端應用程序,則該客戶端可以與RESTful服務進行通信-一個更簡單,跨服務器,跨平台的通信接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.