• 締切済み

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(); } } }

みんなの回答

  • sk8fit
  • ベストアンサー率0% (0/0)
回答No.1

JBoss4.2からセキュリティー上の観点からバインド(監視)するアドレスの デフォルト(初期設定)が127.0.0.1(稼動PC自身)になったのです。 いままで(4.0.x系)は全てのIPアドレスをバインドしていました(設定0.0.0.0) ◆公式文書(readme.htmlより) JBossAS now binds its services to localhost (127.0.0.1) *by default*, instead of binding to all available interfaces (0.0.0.0). This was primarily done for security reasons because of concerns of users going to production without having secured their servers properly. To enable remote access by binding JBoss services to a particular interface, simply run jboss with the -b option, but be aware you still need to secure you server properly. となっています。 セキュリティ的にはこの状態も望ましいかもしれません。 とりあえず今までと同じように動作させたい場合 -b オプションを使って /usr/local/jboss/bin/run.sh -b 0.0.0.0 のようにバインドするIPを通知してあげればOKです。

関連するQ&A

  • ejb-jarファイルの間違いが分からないです

    ejb-jarファイルを本のとおりに書いてエラーが出たので本のサンプルソースでやってみたんですが、エラーが出ます。 <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd"> の記述がどうしてもうまくいきません。 エラーは以下のとおりです。 無効な文字がDTD内に見つかりました。リソース'http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd'の実行エラーです。ライン1、位置1 この本の出版された時と、記述内容が変わってしまったんですかね?本はJBOSS入門と言う本です。JBOSSなのでGUI上で設定できないみたいで、このファイルがうまくいかないと先に行きません。誰か教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • LDAPのコネクションが切れません

    すいません、、何方か知っている方がいましたらご教授下さい。 アプリ環境:windows2003 Websphere v5.1 JDK 1.4.2 LDAP環境:AIX5 OpenLDAP の環境で、javaからLDAPにアクセスするロジックを作成中です。 アクセスは出来るのですが、コネクションがclose()を使っても切れません。 ガベージコレクションで切れる事はわかったのですが、何かほかの方法はないでしょうか?よろしくお願いいたします。 import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; public class LdapDAO { private Hashtable env; private DirContext ctx = null; public LdapDAO() throws NamingException { String url = "ldap://172.22.1.85:389"; String auth = "simple"; String base = "ou=people,dc=com"; String user = "***"; String pass = "***"; env = new Hashtable(); env.put( Context.INITIAL_CONTEXT_FACTORY, cf); env.put( Context.PROVIDER_URL, url); env.put("java.naming.ldap.version", "3"); env.put( Context.SECURITY_AUTHENTICATION, auth); env.put( Context.SECURITY_PRINCIPAL, user); env.put( Context.SECURITY_CREDENTIALS, pass); env.put("com.sun.jndi.ldap.connect.timeout", "3000"); env.put("com.sun.jndi.ldap.connect.pool", "true"); env.put("com.sun.jndi.ldap.connect.pool.timeout", "2000"); } public String searchEmpAll(String employeeNumber, String flg) throws NamingException { String result = ""; ctx = new InitialDirContext(env); SearchControls cons = new SearchControls(); cons.setSearchScope(SearchControls.SUBTREE_SCOPE); cons.setReturningObjFlag(true); cons.setReturningAttributes(new String[]{****}); String filter = "****"; NamingEnumeration res = ctx.search(base, filter, cons); for(int i = 0; res.hasMore(); i++) { SearchResult entry = (SearchResult) res.next(); Attributes attrs = entry.getAttributes(); Attribute attribute = attrs.get(*****); if(attribute != null) { result = (String) attribute.get(); } } cons = null; res = null; ctx.close(); // System.gc(); return result; } }

    • ベストアンサー
    • Java
  • LINUX文字化け

    こんにちは。 いつも勉強させていただいています。 質問があるのでよろしくお願いします。 以下のjsp、サーブレットプログラムによって DBアカウント"DBtest"のテーブル"test"に 2バイト文字を登録すると"?"と文字化けしてしまいます。 文字化けせず登録する方法(コーディング) を教えていただけないでしょうか 非常に困っております。 ご回答よろしくお願いします。 【環境】 データベース MYSQL 4.1.1 TOMCAT 4.1.31 【手順】 1. http://ドメイン/コンテキスト/test.jspにアクセス 2. 2バイト文字をテキストボックスに入力する。 3. 送信ボタンを押下する。 確認:mysqlにログインし"select * from test"    とコマンドを入力し実行する。 結果:2バイト文字の部分が"?"となっている。 ------------test.jsp--------------- <html> <head></head> <body> <form action="test" method="post" > <input type="text" name="test"> <input type="submit" value="送信"> </form> </body> </html> --------test.java-------- import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.RequestDispatcher; import java.io.PrintWriter; import java.sql.*; import java.util.*; public class test extends HttpServlet { String testStr="";   Connection con_info = null; Statement stmt = null; ResultSet rs_master = null;   ResultSet rs_transaction = null; Exception exception; public void doPost( HttpServletRequest req, HttpServletResponse res ) throws Exception { req.setCharacterEncoding( "Shift_JIS" ); res.setContentType( "text/html; charset=Shift_JIS" ); testStr=req.getParameter("test"); try { Class.forName( "com.mysql.jdbc.Driver" ); String jdbcurl = "jdbc:mysql://localhost/DBtest"; Properties props = new Properties(); props.put("user", "root"); props.put("password", "password"); props.put("useUnicode", "true"); props.put("characterEncoding", "Shift_JIS"); con_info = DriverManager.getConnection( jdbcurl, props ); String sql="insert into test(input_str) values('"+testStr+"')"; stmt = con_info.createStatement(); int kekka = stmt.executeUpdate(sql);    //省略 } catch(Exception e) { //省略(エラー画面遷移するコード) } } } -------------------------------------------------------

    • ベストアンサー
    • Java
  • コンパイルエラー

    J2sdkeeをインストールしてコンパイルをしようとすると、 一行目の import javax.ejb.*; の部分で javax.ejbパッケージは存在しません。 というメッセージがでてコンパイルエラーになります。 pathとJAVA_HOMEとJ2EE_HOMEとCPATHを設定したのですが、何が原因なのかわかりません。 わかる方教えてください。

    • ベストアンサー
    • Java
  • JBOSS+TOMCAT起動時のエラー

    JBOSSを導入しようと思ってインストールして起動させようとするとコンソールに文字が流れてある時点で止まります。 そのとき、"http://localhost:8080"でもページは表示されませんし、 終了させようとしてCtrl+Cを実行してもそれも途中で止まってしまいます。 状況は以下の通りです。 インストールしたJBOSS:JBoss2.4.6_Tomcat4.0.3 発生エラー:run_with_catalina.batを実行させると ***** .... [INFO,STDERR] Server.run/init: java.sql.SQLException: File input/output error: C:\Program%20Files\JBoss-2.4.6_Tomcat-4.0.3\jboss\db\hypersonic\default.properties [INFO,HypersonicDatabase] Database started .. .. [INFO,XAPoolDataSource] Creating XA Pool [INFO,DefaultDS] XA Connection pool DefaultDS bound to java:/DefaultDS ***** と、ココで止まってしまいます。 「JBoss-2.4.6 Started in 0m:50s.146」というメッセージ(数字は適当)が表示されたら起動完了ということらしいのですが。。。 そこでCtrl+Cで次の行が追加されてコンソールがフリーズします。 ***** [INFO,STDERR] Shutting down [INFO,ServiceControl] Stopping 48 MBeans [INFO,HypersonicDatabase] Stopping ***** インストール手順 ・JBoss2.4.6_Tomcat4.0.3.zipをc;\Program Files\JBoss2.4.6_Tomcat4.0.3のディレクトリに展開 ・環境変数「JBOSS_DIST」に上記のディレクトリを指定 ・環境変数「CATALINA_HOME」に%JBOSS_DIST%\catalinaを指定 以上です。これは多分間違っていないと思います。 OSはWIN2kですが、関係あるでしょうか。 ちなみに別のTomcatでWebアプリケーションを勉強していましたが、起動させていないので関係ないと思うのですが。 また既存のTomcat(4.0.4)とJBossを連動させる術がありましたら教えていただければ。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVA NoClassDefFoundError

    javadriveHPのサンプルスクリプトにてメール配信プログラムを動かそうとしています。 環境構築は完了し、サンプルスクリプトも動作確認できました。 そこで、そのスクリプトをサーブレット化しようとして、パッケージ名を付けたところからNoClassDefFoundError(どうやらSessionのようです)が発生しています。 いろいろサイトも調べて解説も読みましたが、どこを直せばよいか検討がつかなかったので質問させていただきました。 下記がソースになりますが、パッケージ名を付ける前は正常に動作していました。 頭悪い私を助けてください;; よろしくお願いします! package Tool; import java.util.*; import java.io.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class Sendmail { public String mailHost = ""; public String mailTo = ""; public String mailFrom = ""; public String mailSubject = ""; public String mailMessage = ""; public Sendmail(){} public void setHost (String h) { mailHost = h; } public void setTo (String t) { mailTo = t; } public void setFrom (String f) { mailFrom = f; } public void setSubject (String s) { mailSubject = s; } public void setMessage (String m) { mailMessage = m; } public void mailSend() { Properties props = new Properties(); props.put("mail.smtp.host", mailHost); props.put("mail.host", mailHost); props.put("mail.from", mailFrom); Session s = Session.getInstance(props); try { MimeMessage msg = new MimeMessage(s); msg.setFrom(new InternetAddress(mailFrom)); InternetAddress[] address = InternetAddress.parse(mailTo); msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject(mailSubject, "ISO-2022-JP"); msg.setSentDate(new Date()); msg.setText(mailMessage, "ISO-2022-JP"); Transport.send(msg); } catch(MessagingException mex) { System.out.println("--Exception handling in msgsendsample.java"); mex.printStackTrace(); } } /* public static void main(String args[]) { Sendmail sm = new Sendmail(); sm.setHost("XX.XX.XX.XX"); sm.setTo("XXXX@XXXX"); sm.setFrom("XXX@XXX"); sm.setSubject("ああああ"); sm.setMessage("いいいいい"); sm.mailSend(); } */ }

    • ベストアンサー
    • Java
  • コンパイルエラー

    過去ログも参考にしたのですが、解決しませんでしたので、よろしくお願いします!! コンパイルすると、下のエラーが出てしまいます。 どこかへのクラスパスが足りないのかな?とは思うのですが、一体どこへ?(T△T) パッケージ com.sun.odi.tree は存在しません。 import com.sun.xml.tree.*; --code-- import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import org.w3c.dom.*; import com.sun.xml.tree.*; -------- [Win2k,tomcat4.0.6,J2sdk1.4.1]です。

  • コンパイルエラー

    前の『Server Hangup』の質問とは別にこちらもお願いします。ちなみにあれは家のパソコンです。今回は会社のパソコンなんですが、こちらは同じようにTomcatをインストールしてhttp://localhost:8080/にアクセスするとちゃんと画面が表示されます。しかし、HelloServlet.javaがコンパイルできないのです。 これも本を読みながら同じようにやっているのですが・・・。 一体何が原因なのでしょうか? 環境はOSがWindows2000、j2sdk1.4.1、jakarta-tomcat-4.0.3-LE-jdk14です。 ファイルのあるディレクトリに移動して javac -classpath=%CATALINA_HOME%\common\lib\servlet.jar;%CLASSPATH% HelloServlet.java と入力すると以下のようなエラーになります。 HelloServlet.java:5: パッケージ javax.servlet は存在しません。 import javax.servlet.ServletException; ^ HelloServlet.java:6: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServlet; ^ HelloServlet.java:7: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletRequest; ^ HelloServlet.java:8: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletResponse; ^ HelloServlet.java:14: シンボルを解決できません。 シンボル: クラス HttpServlet 場所 : HelloServlet の クラス public class HelloServlet extends HttpServlet {   … エラー 8 個 質問内容は検索したのですが、同じようなのは、コードの書き間違いだったようで 回答は得られませんでした。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • getServletConfig()でのコンパイルエラー

    以下のソースでコンパイルエラーが出てしまいます。 ソースが汚くて申し訳ないです。 ------------------------------------------------ package to.msn.wings.chap4; import java.io.IOException; import java.net.URL; import java.util.List; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.fetcher.FeedFetcher; import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.GenericServlet; class Rssdata{//データ格納用クラス String[] title = new String[20]; String[] link = new String[20]; String[] day = new String[20]; } public class RssOriginal { // フィードのURL private static final String[] FEED_URLS = { "http://honyarara/index20.rdf", }; public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception, ServletException, IOException { int i = 0;//for文用変数 Rssdata rssdata = new Rssdata();//rssデータ格納用クラス // HTTPを元にフィードを取得するクラス「FeedFetcher」 ………(1) FeedFetcher fetcher = new HttpURLFeedFetcher(); // フィードの内容、フィードに含まれる記事エントリの内容を出力する for (String url : FEED_URLS) { // フィードの取得 ………(2) SyndFeed feed = fetcher.retrieveFeed(new URL(url)); Calendar cal = new GregorianCalendar();//カレンダー変換オブジェクト生成 for (SyndEntry entry : (List<SyndEntry>) feed.getEntries()) { entry.getPublishedDate(); rssdata.day[i] = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH); rssdata.link[i] = entry.getLink(); rssdata.title[i] = entry.getTitle(); i++; } } request.setAttribute("feed", rssdata); getServletConfig().getServletContext().getRequestDispatcher("/chap4/rss/index.jsp").forward(request,response); } } ------------------------------------------------ ------------------------------------------------ エラー内容 RssOriginal.java:75: シンボルを見つけられません。 シンボル: メソッド getServletConfig() 場所 : to.msn.wings.chap4.RssOriginal の クラス getServletConfig().getServletContext().getRequestDispatcher("/ch ap4/rss/index.jsp").forward(request,response); ------------------------------------------------ どなたか解決方法がわかりましたら教えてください。

    • ベストアンサー
    • Java
  • J2EEのjavax.mail機能について

    Tomcat4.1.18と1.4.0及び拡張ファイルactivation.jarとmail.jarファイルを使用し、ある教本からクライアントからの新規会員の仮登録があると、mailで本登録を行うかどうか仮登録をしたクライアントに自動的に送るというシステムを構築中です。現在SMTPサーバーの接続のところでエラーが発生している状態です。 SMTPサーバーの設定で使用するPropertiesクラス及びsetProperty()メソッドの使用について詳しく教えてもらえないでしょうか? // SMTPサーバーの設定 Properties props = new Properties(); props.setProperty(smtpServer, "mail.smtp.host"); J2EEのリファレンスを参照してみたのですが、Propertiesクラスがなかったので仕様がわかりませんでした。

専門家に質問してみよう