当前位置: 首页 > 知识库问答 >
问题:

没有远程出站连接的Wildfly到Wildfly EJB客户端

欧阳俊晖
2023-03-14

我希望能够有两个Wildfly(或JBoss7)实例,其中一个服务器与另一个服务器上的EJB对话。棘手的部分是,根据文档,需要创建带有出站套接字绑定的远程出站连接。这对我们的运营团队来说是一个很大的麻烦,尤其是当我们想要扩展的时候。

共有1个答案

须彭亮
2023-03-14

Jgitter的回答让我大吃一惊。以下是我最后得到的结果:

  /**
   * @return a reference to the EJB
   * @throws EjbLookupException
   */
  @NotNull
  public T lookup ()
     throws EjbLookupException
  {
     String path = createJndiPath();
     Context initialContext = null;
     try
     {
        initialContext = createInitialContext();

        //noinspection unchecked
        final T ejb = (T)initialContext.lookup( path );

        if( m_apiVersion != null )
        {
           ( (RemoteAPI)ejb ).validateClientCompatibility( m_apiVersion );
        }

        return ejb;
     }
     catch( NamingException | RuntimeException e )
     {
        throw new EjbLookupException( "Unable to find the JBoss EJB at " + path, e );
     }
     finally
     {
        if( initialContext != null )
        {
           //noinspection ThrowableResultOfMethodCallIgnored
           Closer.close( initialContext );
        }
     }
  }

  /**
   * There are a lot of ways to do JBoss 7 / Wildfly EJB lookups.  Using this method, we don't have to create
   * outbound socket bindings whenever we want to use a remote EJB.
   *
   * @throws NamingException
   */
  @NotNull
  private Context createInitialContext ()
     throws NamingException
  {
     Properties properties = new Properties();

     properties.put( Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming" );
     properties.put( "org.jboss.ejb.client.scoped.context", "true" );
     properties.put( "remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED", "false" );
     properties.put( "remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS", "false" );
     properties.put( "remote.connections", "default" );

     properties.put( "remote.connection.default.host", m_host );
     properties.put( "remote.connection.default.port", String.valueOf( m_port ) );

     if( m_username != null )
     {
        properties.put( "remote.connection.default.username", m_username );
     }
     if( m_password != null )
     {
        properties.put( "remote.connection.default.password", m_password );
     }

     return new InitialContext( properties );
  }

  public static class EjbLookupException
     extends Exception
  {
     EjbLookupException (
        @NotNull String message,
        @NotNull Throwable cause )
     {
        super( message, cause );
     }
  }

我不确定是否需要限定范围的上下文,并且可能没有正确关闭连接。我会根据我发现的情况更新这个答案。

 类似资料:
  • 这里是HBase/Hadoop的超级新版本。我启动并运行了一个两节点HBase测试集群,现在我正尝试从一个远程Java客户端连接到该集群。这里是我陷入困境的地方:客户端成功地连接到单服务器Zookeeper仲裁(与HBase主服务器运行在同一服务器上),但是Zookeeper传递回客户端的地址是localhost,而且(很明显)客户端无法连接到任何东西,因为HBase不在本地运行。考虑到由于管理原

  • 问题内容: 我在AWS中创建了一个3节点(1个主节点,2个工作人员)集群。我可以将作业从主服务器提交到群集,但是我无法使其在远程工作。 我可以从主人那里看到: 因此,当我从本地计算机执行时,它无法连接到: 但是,我知道如果将master设置为,它会起作用,因为那样它将在本地运行。但是,我希望客户端连接到该远程主服务器。我该怎么做?Apache配置外观文件。我什至可以远程登录到该公共DNS和端口,还

  • 我要创建一个与spring FTPSSessionFactory的ftp连接。 在我的项目中,我将xml配置用于与TLS的ftp连接(它起作用了): 现在我的问题是: 我如何修改xml部分(我猜是用setter)使它同时适用于这两个部分?

  • 问题内容: 我为远程服务器编写了以下hbase客户端类: 它引发了一些异常: 您能告诉我为什么会引发异常,代码有什么问题以及如何解决它。 问题答案: 由于您的HBase服务器的hosts文件,因此会发生此问题。 您只需要编辑HBase服务器的/ etc / hosts文件。 从该文件中删除localhost条目,然后将localhost条目放在HBase服务器IP的前面。 例如,您的HBase服务

  • 我们开发了一个培训应用程序,其中包含一个与EJB通信的独立java客户端。工作设置包括Windows 7上的JBoss AS 7.1和通过/bin/add user创建的应用程序用户。球棒 客户端是这样编码的: 客户端是用jboss客户端启动的。类路径中的jar。 现在,我们尝试改用WildFly 8.1,它已成功部署,但客户端失败 将JNDI查找名称更改为在部署期间打印出来的内容(例如)导致 在

  • 我在远程服务器上安装了一个干净的Wildfly8.1。注意,这个远程服务器是用Vagrant创建的虚拟盒子服务器。 现在我想使用远程JBoss服务器连接IntelliJ。 首先,我创建了一个虚拟用户,用户名/密码:jboss/jboss 然后我使用以下命令启动wildfly服务器: 以下是我在IntelliJ中的远程JBoss服务器设置: 但我得到以下错误: