• 締切済み

jbossでEJBをネットワーク的に分割して使用するには

初めまして、最近EJBとjbossの勉強を始めたものです。 あるサーバにあるEJBから、他のサーバにあるEJBをリモートで呼び出して使用したいと思っています。 どの参考書にも分散オブジェクトについてや、リモートインタフェースとローカルインタフェースの違い、JNDIによる名前解決等に関することは書いてあるのですが、実際にEJBをネットワーク的に分散させて配置するとなると、具体的な手法について触れているものは見当たりません。 どなたか御存知の方がおられましたら、教えて戴けませんでしょうか。 具体的な解答ではなくても、関連するドキュメントのURIだけでもかまいません。 どうかよろしくお願いいたします。

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.1

すいません、JBoss には明るくないので直接の回答ではありません。 勉強するなら無償で開発・運用ができていて日本語ドキュメント、サンプルが充実してる WebLogic Server もオススメです。チュートリアルも充実しているので順を追って勉強するには良いでしょう。 ・ダウンロード https://www.beasys.co.jp/BeaPortal/download/generalNew/begin.do?ID=1&VERSION_KEY=16 ・ドキュメント http://edocs.beasys.co.jp/e-docs/wls/docs81/index.html ・サンプル/チュートリアル http://edocs.beasys.co.jp/e-docs/wls/docs81/samples.html

関連するQ&A

  • JBoss(EJB)へのアクセスがエラーになります。

    今回初めて、JBossを利用してステートレスJavaBeanをクライアントからアクセスしようとしています。クライアントでJBossサーバのアドレスを"localhost"または"127.0.0.1"とするとアクセスできますが、実際のIPアドレスを指定すると以下のエラーが出ます。 Could not obtain connection to any of these urls: 10.200.33.181:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] もし、原因などが判る方がいらっしゃれば、アドバイスをお願いします。 【環境】 JBoss jboss-4.2.0.GA Java Sun JDK1.6.0 サーバOS Windows XP/Redhat Enterprise Linux4(両方とも同じ現象) 【インターフェースプログラム】 package sample; public interface Bank { String getName(); } 【Bean本体プログラム】 package sample; import javax.ejb.Local; import javax.ejb.Remote; import javax.ejb.Stateless; @Stateless @Remote @Local public class BankBean implements Bank { public String getName() { return "Hello World"; } } 【クライアントプログラム】 package sample; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.Properties; public class Client { public static void main(String[] args) { Properties props = new Properties(); props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); props.put("java.naming.provider.url", "10.200.33.181:1099"); // エラー //props.put("java.naming.provider.url", "127.0.0.1:1099"); // OK // props.put ("java.naming.provider.url", "158.214.125.162:1099"); // エラー //props.put ("java.naming.provider.url", "MY-SERVER"); // エラー // props.put ("java.naming.provider.url", "localhost:1099"); // OK try { Context ctx = new InitialContext(props); Bank ejb = (Bank) ctx.lookup("BankBean/remote"); // エラー発生場所 System.out.println(ejb.getName()); } catch (NamingException e) { System.err.println(e.getMessage()); e.printStackTrace(); } } }

  • EJBコンテナ。

    OJT期間中でサーバサイドを勉強中です。 アプリケーションサーバーの使用で組んだEJBをデプロイ(配置ですか)したときのコンテナの動作を知りたいです。 ちなみに基本的にアプリケーションサーバはオートデプロイで、jarファイルを当該ディレクトリに置いたとき、自動的にEJBが認識されます。 そもそも、EJBのコンテナとは、アプリケーションサーバにEJBが認識された時に作られるものなのでしょうか? クライアントからEJBの機能を呼び出そうとしたときにコンテナを意識したことはありませんが、参照の取得の過程でHomeインターフェース、Remoteインターフェース、Beanは一体どのような過程を辿ってインスタンスを生成し、実行可能状態に至るのでしょうか? また、Beanで実装したビジネスメソッドを実行する過程はどのようなものでしょうか?(まぁ、インスタンスが生成されれば普通にメソッドが呼び出されるのですが) 内部の概念の部分で、知る必要がないかも知れませんが、知りたいのでぜひ教えてください。 ちなみに java.sun.com のサイトにあるj2eetutorial を見て勉強中ですが、そこの説明は表層的なもののようでよくわかりません。 それと、余裕がありましたら、複数のサーブレットに渡って一つの EJB インスタンスを使用する方法(Sessionに設定する以外に)を教えてください。 いまいちよく分かっていないので、質問内容が的外れになっているかも知れませんが、よろしくお願いします。 説明するのが面倒くさいという方は解説のあるページを教えていただくだけでも結構です。

    • ベストアンサー
    • Java
  • JBoss の仕組み、開発時に行うべきこと。

    JBoss について質問です。 (JBoss EAP 6.1.0 です) パッケージの修正から再配置までの手順でわからないところがあり困っています。 JBossは未経験なのですが、10年くらい前にApatch + Tomcat で Struts のフレームワークでほんのちょっとだけ開発を行ったことがあります。 開発の流れは、以下のように認識しているのですが、何かしらの手順が抜けていたり、認識が誤っていたりするのでしょうか?? (Eclipseを使っています。) (1)プロジェクトをインポート (2)ソースを修整しコンパイル (3)Warファイルとしてエクスポート (4)%JBOSS_HOME%/server/default/deploy にWarファイルを配置 ****************************************************** このとき、 (1)「Warファイルのエクスポートの仕方」がわかりません。  メニューから選択すると、  パッケージの名前を入れたり、出力先を選択するようなダイアログが出るのですが、  パッケージの名前を入れても、OKボタンが活性にならず、作成ができないのです。 (2)「ソースを修整しコンパイル」をしたときに、  .classファイルはどこかの出力ディレクトリに作られるのでしょうか?  (見当たらないのですが、.classファイルは作られずに、   Warファイルとしてその中に内蔵されるものなのでしょうか)   Warファイルには、    jspファイル  ・・・ プレゼンテーション層    classファイル ・・・ サーブレットや、ファンクション層    jarファイル  ・・・ 複数のclass をパッケージとしてまとめたもの    web.xmlファイル ・・・ 設定ファイル   が含まれているという認識です。   しかし、不思議なのは、   なぜ「server/default/deploy にWarファイルを配置」   で動くのか?というのがわかっていません。   それぞれ、   htmlやjspファイル ⇒ WEB-INFの直下   classファイル ⇒ WEB-INF/classes   jarファイル ⇒ WEB-INF/lib   web.xmlファイル ⇒ WEB-INF/web.xml   に配置すると思います。   そして、   <welcome-file-list>要素配下の、   <welcome-file>に、   index.jsp、index.htmlを配置する認識です。   しかし、わからないのが、   「Warファイル」の形式のまま、   server/default/deploy に置いただけで、    ・WEB-INFの直下    ・WEB-INF/classes    ・WEB-INF/lib    ・WEB-INF/web.xml   には何も置いていないのに、   なぜ動くのでしょうか? (3)リリースは、必ず「Warファイル」でやらなければならないのでしょうか?  「jarファイル」を作る際、jarの中には、web.xml が入っていない認識です。  なので、  「jarファイルの差し替え」を行うときは、   ・クラスのインタフェースが変わっていない時   (.classpath に書かれているクラスのインタフェースに変更がないとき)  に限り、jarファイルの置き換えだけで、プログラムを入れ替えることができるということであっていますでしょうか? (4)プレゼンテーション層としてのトップページとしての「html」と、  そのhtmlから実行されるサーバ処理の「関連付け」はどのような仕組みになっているのでしょうか?   「WEB-INF/web.xml」に記載された、   ウェルカムページというか、TOPページというか、それを経由して、   formコントロール」に Inputの情報を、   HTTP Request として、サーバに送られる認識です。   そのとき、   その「HTTP Request」は、どこで受け取っているのでしょうか??   サーバ上のどこかのクラスで、   なんらかの方法で「HTTP Request」のヘッダ情報を解析し、   「要求された処理」を実際に動かすクラスに、処理を依頼すると思うのですが、   その「HTTP Request」を元に振り分け処理を行っているクラスというのは、   一体、なんというクラスなのでしょうか??   というか、   どのクラスでそれを行うのかは、一体、なんという設定ファイルに記載するのでしょうか?   (.xml ファイルなり、.conf ファイルなり、.ini ファイルなり、    設定系ファイルが多くて中々探せないです。。) (5)サーブレットが処理を終えたら、  クライアントに「HTTP Response」というか、  「HTML」を返す認識ですが合っていますでしょうか? (6)「.project」は、「パッケージ」1個につき1個存在しており、  また「パッケージ」1個につき、「jarファイル」も1個ということで合っていますでしょうか?

    • ベストアンサー
    • Java
  • RequestDispacherインターフェイスのことを知っている方がいたら・・

    マニアックな質問なのかもしれませんが・・ インターフェイス及び抽象メソッドの定義は ●インターフェイスに定義されているメソッドは必ず抽象メソッドである ●抽象メソッドにはメソッドのプロトタイプだけが定義されている だと思うのですが、 RequestDispatcherインターフェイスのforwardメソッドには既に 「サーブレットから他のリソースへ、requestオブジェクトとresponseオブジェクトを転送する」 という処理内容が定義されているように思います。>java.sun.comのapiドキュメント これってインターフェイスの原則から外れていると思うのですが、 どうなのでしょうか。「例外」もあるってことなんでしょうか。 おひまだったら解答をお願いいたします。

    • ベストアンサー
    • Java
  • ターミナルサービスでのデータ保存先

    こんばんは。 XPのクライアントPCからServer2003にリモートデスクトップで 接続しターミナルサーバー上でExcelやPowerpointを起動しても ターミナルサーバー上にしか保存できないのですが、ローカルPCに 保存する方法があれば教えていただけないでしょうか。 また、Server2003R2、Server2008の場合だと可能とかあるのでしょうか。ドメインのポリシーの設定とかになるんですかね? 色々と検索してみたのですが適切なドキュメントを見つけられませんでした。ご存知の方がいらっしゃいましたら教えて下さい。 お願いします。

  • Redhatのフルバックアップをできればリモートで取りたいです。

    サーバのハードウェアメンテナンスのため、ハード故障に備え、バックアップをとりたいです。できればリモートがいいですが、無理ならローカルもありです。 sshとddを組み合わせてできたように思うのですが、具体的にコマンドの 書式はどんな感じになりますでしょうか? 詳しくないのでどう書いたらいいのかよく分かりません。 よければご教示下さい。

  • RMI

    http://www.ki.rim.or.jp/~kuro/Java/RMI/index.html を参考にRMIのサンプルを試みています。 サーバ:Linux クライアント:Windows2000 ■サーバ側 ・インタフェース ・リモートオブジェクトクラス ・サーバプログラムクラス ・スタブクラス ・スケルトンクラス ・セキュリティポリシーファイル ・また、/usr/binにあるrmiregistryを違うところに 退避させました。  ■クライアント側 ・クライアントプログラムファイル ・リモートオブジェクトクラス ・セキュリティポリシーファイル それぞれ、準備した後、サーバ側で、 rmiregistry & ↓ java -Djava.security.policy=rmitestpolicy -Djava.rmi.server.codebase=http://192.168.1.10/ RMITestServer とすると、 Exception in thread "main" java.lang.NoClassDefFoundError:RMITestServer とでます。Noclassといわれている、クラス、は 存在しているのですが。。。 なにか、はずしているようでしたら教えていただきたい ので,宜しくお願いします。

  • ネット上からローカルへアクセスしたい

    インターネット上からローカル環境にあるファイルにアクセスできるのでしょうか? 具体的には、 サーバー上にあるhtmlファイルから、 <a href="file:///C:/Documents..."></a> のような感じでローカルのファイルにアクセスしたいです。 (↑ではうまくいきませんでした) また、それが出来る場合、IE、ネットスケープどちらでも可能でしょうか?

  • ローカルでのonreadystatechangeの動作について

    現在下記のようなコードを書いて、HTMLを読み込む処理を行おうとしています。 function LoadHtml(id , uri) { if(!XmlsReq)return; XmlsReq.open('GET',uri); XmlsReq.send(null); XmlsReq.onreadystatechange=function(){ alert("piyo"); if(XmlsReq.status==0 || XmlsReq.readyState==4 && XmlsReq.status==200) { alert("hoge"); document.getElementById(id).innerHTML=XmlsReq.responseText; } } document.getElementById(id).innerHTML=XmlsReq.responseText; } これはHTTPサーバ上で動かすとちゃんと動作し、 またHTTPステータスコードが0になるローカルでもfirefoxなら動くのですが、 IE7で試してみたところ、動作しません。 原因を探してみたところ、XmlsReq.send(null);までは実行されておりalert("piyo")が表示されないことから、 どうもonreadystatechangeイベントが検出されていないような動きをしています。 ローカルのIE7環境でちゃんと動作させるにはどうしたら良いか、分かる方居ましたら教えて下さい。

    • ベストアンサー
    • AJAX
  • WSHでリモートスクリプト起動時エラー

    □やりたいこと  2台のXP環境で、WSHを使用してリモートスクリプトを実行させたい  (ローカルサーバAからリモートサーバBでJBSを実行) □事象  サーバAのVBS(rmt_local.vbs)を起動したところ、  CreateScript実行時に以下のエラーとなります。  【エラーメッセージ】  429 ActiveX コンポーネントはオブジェクトを作成できません。 □質問  原因と対応方法を知りたい。  下記の設定以外になにが影響しているのか? □環境 【ローカルサーバA】  OS:WindowsXP Professional Version 2002 SP3  WSH:Version5.8  ドメイン:WORKGROUP 【リモートサーバB】  OS:WindowsXP Professional Version 2002 SP3  WSH:Version5.8  ドメイン:WORKGROUP 【スクリプト配置】  ローカルサーバAのC:\TESTにのみスクリプト(1)と(2)を格納している  リモートサーバBにはC:\TESTのフォルダのみ作成している □設定関連  ●ローカルとリモートで設定   ファイアウォール設定(DCOM、wsdcript.exeを通す)   ドメインプロファイルの設定でリモート管理の例外を許可   実行ユーザをAdministratorsグループに追加  ●ローカルのみ設定   COMセキュリティのアクセス許可で「ANONYMOUS LOGIN」のリモートアクセスを許可  ●リモートのみ設定    レジストリ:HKEY\LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa         の下のforceguest(文字列値)に0を設定   レジストリ:HKEY\LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings         の下にRemote(文字列値) を作成して1を設定   COMセキュリティのアクセス許可でEveryoneグループの「リモートアクセス」を許可   COMセキュリティの起動許可でAdminstratorsグループの「リモートからの起動」と   「リモートからのアクティブ化」を許可 ================================================================ □スクリプト(1) 【rmt_local.vbs】 Option Explicit On Error Resume Next Dim objWshCtrl ' WshController オブジェクト Dim strRemotePC ' リモートのコンピュータ名 Dim strScript ' 実行するスクリプトファイル Dim objExecCmd ' 実行コマンド情報 Set objWshCtrl = WScript.CreateObject("WshController") If Err.Number = 0 Then strRemotePC = "B" strScript = "rmt_remote.vbs" Set objExecCmd = objWshCtrl.CreateScript(strScript, strRemotePC) If Err.Number <> 0 Then Set objExecCmd = Nothing WScript.Echo "エラー: CreateScript " & Err.Description WScript.Echo "異常終了しました。" Else WScript.Echo strRemotePC & " で " & strScript & " を実行します。" objExecCmd.Execute Do While objExecCmd.Status = 1 WScript.Sleep(100) Loop WScript.Echo "正常終了しました。" End If Else WScript.Echo "エラー: CreateObject " & Err.Description End If Set objExecCmd = Nothing Set objWshCtrl = Nothing ================================================================ □スクリプト(2) 【rmt_remote.vbs】 Option Explicit On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル書き込み用 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("C:\TEST\test.log", 8, True) objFile.WriteLine Now() objFile.Close Set objFile = Nothing Set objFSO = Nothing

専門家に質問してみよう