2017-10-11 4 views
0

Jboss 5でEJB 3.0にhelloworldアプリケーションを作成しました。クライアントクラスEjbClientApplicationを実行しようとすると、例外がスローされます。クライアントクラスを実行中にEJBプロジェクトのCommunicationException:これらのURLに接続できませんでした:localhost:1099

頻繁に私は例外以下になっています。私はそれについてたくさんのことをしてきましたが、私がEJBの初心者であるため、見つけられませんでした。

例外:

javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost/127.0.0.1:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost/127.0.0.1:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]] at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1763) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:693) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686) at javax.naming.InitialContext.lookup(InitialContext.java:392) at com.hex.client.EjbClientApplication.main(EjbClientApplication.java:28) Caused by: javax.naming.CommunicationException: Failed to connect to server localhost/127.0.0.1:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost/127.0.0.1:1099 [Root exception is java.net.ConnectException: Connection refused: connect]] at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:335) at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1734) ... 4 more Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server localhost/127.0.0.1:1099 [Root exception is java.net.ConnectException: Connection refused: connect] at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:305) ... 5 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at org.jnp.interfaces.TimedSocketFactory.createSocket (TimedSocketFactory.java:97) at org.jnp.interfaces.TimedSocketFactory.createSocket (TimedSocketFactory.java:82) at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:301) ... 5 more

JBossサーバは、ポート127.0.0.1:10001にアップしているが、私はこのURL 127.0.0.1:1099をヒットしようとすると、このRYTのですか?

サーバーのプロパティ:

  • アドレス:127.0.0.1
  • ポート:8080
  • JNDIポート:1099

MyCode:これらのコードは、単一のEJBプロジェクトに備え、

RemoteInterfaceClass:

package com.hex.statelessbean; 

import javax.ejb.Remote; 

@Remote 

public interface StatelessSessionBeanRemote { 

    public String displayMessage(); 
} 

StatelessBean:

/** 
* Session Bean implementation class StatelessSessionBean 
*/ 

package com.hex.statelessbean; 

import javax.ejb.Stateless; 

@Stateless 

public class StatelessSessionBean implements StatelessSessionBeanRemote { 

/** 
* Default constructor. 
*/ 
public StatelessSessionBean() { 
    // TODO Auto-generated constructor stub 
} 

@Override 
public String displayMessage() { 
    // TODO Auto-generated method stub 
    return "Hello world"; 
} 

}

クライアント:

package com.hex.client; 

import java.util.Properties; 

import javax.naming.InitialContext; 
import javax.naming.NamingException; 

import com.hex.statelessbean.StatelessSessionBeanRemote; 

public class EjbClientApplication { 

public static void main(String[] args) { 
    try { 
    Properties props = new Properties(); 
    props.setProperty("java.naming.factory.initial", 
    "org.jnp.interfaces.NamingContextFactory"); 
    props.setProperty("java.naming.factory.url.pkgs", 
    "org.jboss.naming"); 
    props.setProperty("java.naming.provider.url", "localhost:1099"); 

    InitialContext ctx = new InitialContext(props); 
    StatelessSessionBeanRemote bean = (StatelessSessionBeanRemote) ctx 
    .lookup("StatelessSessionBean/remote"); 
    System.out.println("Message from Bean :" + bean.displayMessage()); 
    } catch (NamingException e) { 
    e.printStackTrace(); 
    } 

    } 
} 

答えて

0

localhost:1099 to jnp://localhost:1099org.jboss.naming to org.jboss.naming:org.jnp.interfacesを変更し、ejbの名前を確認してください。注釈@RemoteBindingを使用すると、ejbの名前を付けることができます。あなたはポートオフセットを持っていますか?

+0

私は変更を行っていますが、同じ例外が発生しています。 –

+0

@JayanthiMサーバー構成のJNDIポートは何ですか?サーバーログまたはJMXコンソールでEJBを見たことがありますか?java.naming.factory.url.pkgsの値をorg.jboss.naming.clientに変更しようとしましたか? – awagenhoffer

+0

サーバー構成でJNDIポートが1099、ポートが8080です。値をorg.jboss.naming:org.jnp.interfacesに変更しましたが、この例外が頻繁に発生しています。 javax.naming.CommunicationException:これらのURLに接続できませんでした:localhost:1099、検出でエラーが発生しました:javax.naming.CommunicationException:受信タイムアウト[ルート例外java.net.SocketTimeoutException:受信タイムアウト] –

0
Corrected Code: 

    **Interface class:** 


    package com.hex.statelessbean; 

    import javax.ejb.Remote; 

    @Remote 
    public interface StatelessSessionBeanRemote { 

     public String displayMessage(); 
    } 


    **Stateless Bean class:** 

    package com.hex.statelessbean; 

    import javax.ejb.Stateless; 

    /** 
    * Session Bean implementation class StatelessSessionBean 
    */ 
    @Stateless 
    public class StatelessSessionBean implements StatelessSessionBeanRemote { 

     /** 
     * Default constructor. 
     */ 
     public StatelessSessionBean() { 
      // TODO Auto-generated constructor stub 
      System.out.println("************* Calling from Default constructor ******************"); 
     } 

     @Override 
     public String displayMessage() { 
      // TODO Auto-generated method stub 
      System.out.println("************* Calling from displayMessage() ******************"); 
      return "Hello world"; 
     } 

    } 


**Client class:** 


package com.hex.client; 

import java.util.Properties; 

import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 

import com.hex.statelessbean.StatelessSessionBeanRemote; 

public class EjbClientApplication { 

    /** 
    * @param args 
    * @throws NamingException 
    */ 

    public static void main(String[] args) { 
     try { 
      Properties properties = new Properties(); 
      properties.setProperty("java.naming.factory.initial", 
        "org.jnp.interfaces.NamingContextFactory"); 
      properties.setProperty("java.naming.factory.url.pkgs", 
        "org.jboss.naming:org.jnp.interfaces"); 
      properties.setProperty("java.naming.provider.url", 
        "jnp://localhost:1099"); 
     InitialContext ctx = new InitialContext(properties); 
     StatelessSessionBeanRemote bean = (StatelessSessionBeanRemote) ctx 
     .lookup("StatelessSessionBean/remote"); 
     System.out.println("Message from Bean :" + bean.displayMessage()); 
     } catch (NamingException e) { 
     e.printStackTrace(); 
     } 
     } 
} 


**LookUp:** 

Message from Bean :Hello world 
関連する問題