以前はEJBを使用しましたが、実際の動作を理解していることを再確認したいと思います。リモートスタンドアロンクライアントを使用してEJB 3.1セッションBeanを呼び出す
私はシンプルセッションBean EJB(3.1)を作成し、これを.ear(クライアントジャーも同様に)としてパッケージ化しました。下記の抜粋です:
セッションBeanの実装:
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();
}
私はの.earとしてこのEJBを展開し、それが正常にWildfly 10.x
に配備されました。
ここでは、別のJVMで実行されるスタンドアロンのJavaクライアントを使用してアクセスしたいと考えています。
ここにクライアントコードがあります(主にJNDIのために呼び出す方法がわからないため、完了しない可能性があります)。
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ルックアップを行う方法についてthisリンクと呼ば
をリンクでは、それはWildfly特定を持っていることを述べていますJNDIルックアップなしで動作するjar
1)すべてのプロパティは、私はJNDIルックアップのために設定する必要がありますどのような:
誰も私が理解するのに役立つことはできますか?
2)クライアントサイドアプリケーションに存在する必要がある特定のjarファイルはありますか?
特定のWildflyジャーを使用したくない、つまり伝統的なJNDIルックアップを使用したいと思っています。
シンプルな「Hello world」のEJBを書くのは難しいです。私はいくつかの本はうまくいきますが、JNDIとJarファイルを含めるためには、すべてのプロパティを含める必要があることを実際には伝えずに、単に "参照"コードを提供しています。
あなたの答えをありがとう、私はそのクライアントの瓶を見ました。 JNDIの必要がないということを使用している場合、そのジャーが言及しているジャーであるかどうかは疑問です。私はいくつかのクライアント側のjarファイルの必要性があることを理解しています(これは低レベルの通信を行い、異なるアプリケーションサーバーでは異なります)。しかし、リンクに記載されている瓶は、JNDIが起こることができる「標準」(もちろん、異なるASで異なる名前になる)のようなものですか?また、その例では、 "java"ではなく "ejb"を使用しているため、Wildflyに固有のものですか? – CuriousMind
JavaEE標準では、コンテナがリモートインタフェースを提供する必要があるだけであり、実装するコンテナの標準を指定するものではありません。私が言及したように、それぞれは独自のインプリメンテーション・ジャー内に格納された独自のインターフェースを持っています。彼らが共有する唯一のことは、JNDIの上に構築されていることですが、これについては何も標準化されていません。 JBossの古いバージョンに接続するためにWildfly jarを使用することはできません。 – Gimby