了解远程EJB

Rud*_*koŭ 5 java jboss ejb jakarta-ee

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

我有server-side课:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有client-side方法:

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()
  );
}
Run Code Online (Sandbox Code Playgroud)

问题

  1. 服务器上部署了什么?Class/ Object/ 两个都?客户如何找到类/对象?
  2. 怎么ejb:/jboss-as-ejb-remote-server-side/CalculatorBean!" + RemoteCalculator.class.getName()帮忙所以它不知道 host:port
  3. or 一侧 CalculatorBean的逻辑在哪里执行?同样,如果它是在 处执行的,那么两个 s 之间的价值交换是如何进行的?serverclientServerjvm

Dim*_*ien 5

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

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

  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