搜索

7.12. 迁移 Jakarta Enterprise Beans 客户端代码

download PDF

本节讨论 JBoss EAP 7.0 中的 Jakarta Enterprise Beans 客户端的更改。它还解释了如何修改客户端代码,以便在 JBoss EAP 7.0 中使用新的默认远程端口和连接器。此外,它描述了 JBoss EAP 7.1 和 JBoss EAP 7.0 中引入的所需的 JBoss EJB 客户端更改。

注意

从 JBoss EAP 7.0 开始,不支持企业实体 Bean。如需更多信息,请参阅将 实体 Bean 迁移到 Jakarta Persistence

7.12.1. Jakarta Enterprise Beans 在 JBoss EAP 7 中的客户端变化

从 JBoss EAP 7 开始,默认的远程连接器和端口已更改。有关此更改的详情,请参阅更新 远程 URL 连接器和端口

如果您使用 JBoss 服务器迁移工具迁移服务器配置,旧的设置会被保留,您不需要在此处进行详细更改。但是,如果您使用新的 JBoss EAP 8.0 默认配置,您必须进行以下更改。

7.12.1.1. 更新默认远程连接端口

jboss-ejb-client.properties 文件中,将远程连接端口值从 4447 更改为 8080。以下是上一个和当前版本中的 jboss-ejb-client.properties 文件的示例:

示例:JBoss EAP 6 jboss-ejb-client.properties 文件

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

示例:JBoss EAP 8 jboss-ejb-client.properties 文件

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=8080
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

7.12.1.2. 更新默认连接器

如果您使用新的 JBoss EAP 7 配置,则默认连接器已从 remote 改为 http-remoting。此更改会影响使用来自 JBoss EAP 的一个库的客户端连接到不同发行版中的服务器。

  • 如果客户端应用程序使用 JBoss EAP 6 中的 Jakarta Enterprise Beans 客户端库并希望连接到 JBoss EAP 7 服务器,则必须将服务器配置为在 8080 以外的端口上公开 远程 连接器。然后,客户端必须使用新配置的连接器进行连接。
  • 使用 JBoss EAP 7 中的 Jakarta Enterprise Beans 客户端库并想连接到 JBoss EAP 6 服务器的客户端应用程序必须意识到服务器实例不使用 http-remoting 连接器,而是使用 远程 连接器。这可以通过定义新的客户端侧连接属性来实现。

    示例: 远程连接 属性

    remote.connection.default.protocol=remote

7.12.2. 迁移远程命名客户端代码

如果您使用新的默认 JBoss EAP 7 配置运行,您必须修改客户端代码以使用新的默认远程端口和连接器。

以下是如何在 JBoss EAP 6 中的客户端代码中指定远程命名属性的示例。

java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=remote://localhost:4447

以下是如何在 JBoss EAP 7 中的客户端代码中指定远程命名属性的示例。

java.naming.factory.initial=org.wildfly.naming.client.WildFlyInitialContextFactory
java.naming.provider.url=http-remoting://localhost:8080

7.12.3. JBoss EAP 7.1 中引入的其他 JBoss EJB 客户端更改

JBoss EAP 7.0 包含在 JBoss Enterprise Java Beans 客户端 2.1.4 中,JBoss EAP 7.1 及更高版本包含在 JBoss Enterprise Java Beans 客户端 4.0.x 中,其中包括很多对 API 的更改。

注意

从 JBoss EAP 7 开始,不支持企业实体 Bean。有关如何将实体 Bean 迁移到 Jakarta Persistence 的详情,请参考 将实体 Beans 迁移到 Jakarta Persistence

  • org.ejb.client.ejbClientInvocationContext 类添加以下新方法:

    方法类型描述

    isBlockingCaller()

    布尔值

    确定这个调用当前是否阻塞了调用线程。

    isClientAsync()

    布尔值

    确定方法是否标记为客户端同步,这意味着调用必须是异步的,无论服务器端方法是否为异步方法。

    isIdempotent()

    布尔值

    确定方法是否标记为 idempotent,即方法多次被调用,且没有额外的效果。

    setBlockingCaller(boolean)

    void

    确定这个调用目前阻止调用线程。

    setLocator(EJBLocator<T>)

    <T> void

    为调用目标设置 locator。

  • org.ejb.client.ejbLocator 类添加了以下新方法:

    方法类型描述

    asStateful()

    StatefulEJBLocator<T>

    将此 locator 返回为有状态的 locator(如果是)。

    asStateless()

    StatelessEJBLocator<T>

    将此 locator 返回为无状态的 locator(如果是)。

    isEntity()

    布尔值

    确定这是否是实体 locator。

    isHome()

    布尔值

    确定这是否是家 locator。

    isStateful()

    布尔值

    确定这是否是状态 locator。

    isStateless()

    布尔值

    确定这是否是无状态 locator。

    withNewAffinity(Affinity)

    抽象 EJBLocator<T>

    创建这个 locator 的一个副本,但具有新的给定关联性。

  • 引入了一个新的 org.ejb.client.ejbClientPermission 类,它是 java.security.Permission 的子类,用于控制对特权 Enterprise Java Beans 操作的访问。它提供以下构造器:

    • EJBClientPermission (String name)
    • EJBClientPermission (String name, String action)
  • 它提供以下方法:

    方法类型描述

    equals(EJBClientPermission obj)

    布尔值

    检查两个 EJBClientPermission 对象是否相等。

    equals(Object obj)

    布尔值

    检查两个 Permission 对象是否相等。

    equals (Permission obj)

    布尔值

    检查两个 Permission 对象是否相等。

    getActions()

    字符串

    以字符串形式返回操作。

    hashcode()

    int

    返回此 Permission 对象的散列代码值。

    means (EJBClientPermission permissions)

    布尔值

    检查指定权限的行为是否由 EJBClientPermission 对象的行为决定

    implies (Permission permissions)

    布尔值

    检查指定权限的操作 是否由这个 Permission 对象的操作表示。

  • 引入了一个新的 org.ejb.client.ejbMethodLocator 类,以查找特定的 Enterprise Java Beans 方法。它提供以下构造器:

    • EJBMethodLocator (String methodName, String…​ parameterTypeNames)
  • 它提供以下方法:

    方法类型描述

    equals (EJBMethodLocator other)

    布尔值

    确定此对象是否等于另一个对象。

    equals (Object other)

    布尔值

    确定此对象是否等于另一个对象。

    forMethod (Method method)

    静态 EJBMethodLocator

    获取给定反映方法的 locator。

    getMethodName()

    字符串

    获取方法名称。

    getParameterCount()

    int

    获取参数数。

    getParameterTypeName(int index)

    字符串

    在给定索引中获取参数名称。

    hashCode()

    int

    获取哈希代码。

  • 在故障情况下,引入了一个新的 org.jboss.ejb.client.ejbReceiverInvocationContext.ResultProducer.Failed 类。它提供以下构造器:

    • failed (Exception cause)
  • 它提供以下方法:

    方法类型描述

    discardResult()

    void

    丢弃结果,表示不会使用它。

    getResult()

    对象

    获取结果。

  • 引入了一个新的 org.jboss.ejb.client.ejbReceiverInvocationContext.ResultProducer.Immediate 类来获取即时结果。它提供以下构造器:

    • failed (Exception cause)
  • 它提供以下方法:

    方法类型描述

    discardResult()

    void

    丢弃结果,表示不会使用它。

    getResult()

    对象

    获取结果。

  • 为 URI 关联性规格引入了一个新的 org.jboss.ejb.client.URIAffinity 类,它是 org.jboss.ejb.client.Affinity 的子类。它使用 Affinity.forUri (URI) 创建。
  • 它提供以下方法:

    方法类型描述

    equals (Affinity other)

    布尔值

    指明另一个对象是否等于这个对象。

    equals (Object other)

    布尔值

    指明另一个对象是否等于这个对象。

    equals (URIAffinity other)

    布尔值

    指明另一个对象是否等于这个对象。

    getURI()

    URI

    获取关联的 URI。

    hashCode()

    int

    获取哈希代码。

    toString()

    字符串

    返回对象的字符串表示。

  • org.jboss.ejb.client.ejbMetaData Impl 类弃用以下方法:

    • toAbstractEJBMetaData()
    • EJBMetaDataImpl(AbstractEJBMetaData<?,?>)
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.