java - 远程EJB的理解

标签 java jakarta-ee jboss ejb

我正在玩 JBoss 和 EJB,我使用 jboss-eap-quickstarts

我有服务器端类:

package org.jboss.as.quickstarts.ejb.remote.stateless;

import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless
@Remote(RemoteCalculator.class)
public class CalculatorBean implements RemoteCalculator {

    @Override
    public int add(int a, int b) {
        return a + b;
    }

    @Override
    public int subtract(int a, int b) {
        return a - b;
    }
}

我有客户端方法:

private static RemoteCalculator lookupRemoteStatelessCalculator() throws NamingException {
    final Hashtable jndiProperties = new Hashtable();
    jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
    final Context context = new InitialContext(jndiProperties);
    return (RemoteCalculator) context.lookup(
     "ejb:/jboss-as-ejb-remote-server-side/CalculatorBean!" + RemoteCalculator.class.getName()
  );
}

问题是:

  1. 服务器上部署了什么? /对象/两者?如何 客户找到类/对象了吗?
  2. ejb:/jboss-as-ejb-remote-server-side/CalculatorBean 是怎么做到的!"+ RemoteCalculator.class.getName() 帮助因此它不知道 主机:端口
  3. server 上执行 CalculatorBean 逻辑的位置或 客户端 端?同样,如果它是在 Server 上执行的,那么它是如何执行的呢? 两个 jvm 之间的值交换有效吗?

最佳答案

  1. 客户端找到类/对象是因为客户端依赖于服务器端的接口(interface)(pom.xml 文件)。

  2. 通过文件 jboss-eap-quickstarts/ejb-remote/client/src/main/resources/jboss-ejb-client.properties 它找到了 host:port 请注意,您可以将服务器配置为在不同的端口上公开您的服务

  3. CalculatorBean 逻辑将在服务器端执行。

对于我没有回答的所有问题,(什么部署在哪里,jvm 之间的值交换以及 JNDI 地址(ejb:/...)如何让客户端找到正确的服务),您应该阅读 JNDI 和 EJB 的工作原理。

这是一个好的开始:

JNDI: http://www.javaworld.com/article/2076888/core-java/jndi-overview--part-1--an-introduction-to-naming-services.html

EJB: http://www.javaworld.com/article/2071724/java-web-development/ejb-fundamentals-and-session-beans.html

关于java - 远程EJB的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883161/

相关文章:

java - 如何编译并运行PApplet

java - 服务委托(delegate)抛出 "LazyInitializationException: could not initialize proxy - no Session"

java - 为什么JDK的jps命令没有列出JBoss实例的进程?

jboss - JBPM 6.1 Final with Jboss Wildfly - 无法启动 .WeldStartService

java - 如何删除列表和迭代器中的警告[不是由 @SuppressWarnings ] [在两行代码上应用什么泛型类型]

java - 让方法修改引用而不是新对象

java - 什么是源 keystore 密码以及如何找到它?

java - 动态编译java类web项目

java - JSF2.0 - *.xhtml 页面给出 404-NotFound 但 *.jsp 工作正常吗?

eclipse - 在 Eclipse 中禁用自动加载 JBoss 新闻博客信息