9.4. 迁移应用程序客户端
本节介绍如何将客户端应用程序迁移到 Elytron。
将 Naming Client 配置迁移到 Elytron
本节论述了如何使用 org.jboss.naming.remote.client.InitialContext 类(由 org.jboss JNDI 查找的客户端应用程序迁移到 Elytron。
.naming.remote.client.InitialContext 类支持)将执行远程
以下示例假定通过指定用户凭据以及它所连接的命名供应商的 URL 来创建 InitialContextFactory 类。
示例:之前版本中使用的 InitialContext 代码
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
properties.put(Context.PROVIDER_URL,"http-remoting://127.0.0.1:8080");
properties.put(Context.SECURITY_PRINCIPAL, "bob");
properties.put(Context.SECURITY_CREDENTIALS, "secret");
InitialContext context = new InitialContext(properties);
Bar bar = (Bar) context.lookup("foo/bar");
...
您可以从以下迁移方法之一进行选择:
9.4.1. 使用配置文件方法迁移命名客户端 复制链接链接已复制到粘贴板!
使用配置方法将您的命名客户端迁移到 Elytron。
流程
在客户端应用程序
META-INF/目录中创建wildfly-config.xml文件。该文件应包含建立与命名提供程序连接时使用的用户凭据。示例:
wildfly-config.xml文件<configuration> <authentication-client xmlns="urn:elytron:client:1.7"> <authentication-rules> <rule use-configuration="namingConfig"> <match-host name="127.0.0.1"/> </rule> </authentication-rules> <authentication-configurations> <configuration name="namingConfig"> <set-user-name name="bob"/> <credentials> <clear-password password="secret"/> </credentials> </configuration> </authentication-configurations> </authentication-client> </configuration>如下例所示,创建一个
InitialContext。请注意,InitialContext由org.wildfly.naming.client.WildFlyInitialContextFactory类支持。示例:
InitialContext代码Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.wildfly.naming.client.WildFlyInitialContextFactory"); properties.put(Context.PROVIDER_URL,"remote+http://127.0.0.1:8080"); InitialContext context = new InitialContext(properties); Bar bar = (Bar) context.lookup("foo/bar"); ...
9.4.2. 使用编程方法迁移命名客户端 复制链接链接已复制到粘贴板!
使用此方法,您可以提供用于在应用程序代码中直接建立连接的用户凭证。
示例:使用编程方法的代码
// Create the authentication configuration
AuthenticationConfiguration namingConfig = AuthenticationConfiguration.empty().useName("bob").usePassword("secret");
// Create the authentication context
AuthenticationContext context = AuthenticationContext.empty().with(MatchRule.ALL.matchHost("127.0.0.1"), namingConfig);
// Create a callable that creates and uses an InitialContext
Callable<Void> callable = () -> {
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.wildfly.naming.client.WildFlyInitialContextFactory");
properties.put(Context.PROVIDER_URL,"remote+http://127.0.0.1:8080");
InitialContext context = new InitialContext(properties);
Bar bar = (Bar) context.lookup("foo/bar");
...
return null;
};
// Use the authentication context to run the callable
context.runCallable(callable);
9.4.3. 将 Jakarta Enterprise Beans 客户端迁移到 Elytron 复制链接链接已复制到粘贴板!
此迁移示例假定客户端应用已配置为通过 jboss-ejb-client.properties 文件调用部署到远程服务器的 Jakarta Enterprise Beans。此文件位于客户端应用程序 META-INF/ 目录中,包含连接到远程服务器所需的以下信息:
示例: jboss-ejb-client.properties 文件
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=127.0.0.1
remote.connection.default.port = 8080
remote.connection.default.username=bob
remote.connection.default.password=secret
客户端使用类似以下示例的代码查找 Jakarta Enterprise Beans 并调用其方法之一。
示例:调用远程 Jakarta Enterprise Bean 的客户端代码
// Create an InitialContext
Properties properties = new Properties();
properties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
InitialContext context = new InitialContext(properties);
// Look up the Jakarta Enterprise Beans and invoke one of its methods
RemoteCalculator statelessRemoteCalculator = (RemoteCalculator) context.lookup(
"ejb:/ejb-remote-server-side//CalculatorBean!" + RemoteCalculator.class.getName());
int sum = statelessRemoteCalculator.add(101, 202);
您可以从以下迁移方法之一进行选择:
9.4.3.1. 使用配置文件迁移 Jakarta Enterprise Beans 客户端 复制链接链接已复制到粘贴板!
按照以下步骤,使用配置方法将您的命名客户端迁移到 Elytron。
流程
在客户端应用程序
META-INF/目录中配置wildfly-config.xml文件。该文件应包含建立与命名提供程序连接时使用的用户凭据。示例:
wildfly-config.xml文件<configuration> <authentication-client xmlns="urn:elytron:client:1.7"> <authentication-rules> <rule use-configuration="ejbConfig"> <match-host name="127.0.0.1"/> </rule> </authentication-rules> <authentication-configurations> <configuration name="ejbConfig"> <set-user-name name="bob"/> <credentials> <clear-password password="secret"/> </credentials> </configuration> </authentication-configurations> </authentication-client> <jboss-ejb-client xmlns="urn:jboss:wildfly-client-ejb:3.0"> <connections> <connection uri="remote+http://127.0.0.1:8080" /> </connections> </jboss-ejb-client> </configuration>如下例所示,创建一个
InitialContext。请注意,InitialContext由org.wildfly.naming.client.WildFlyInitialContextFactory类支持。示例:
InitialContext代码// Create an InitialContext Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.wildfly.naming.client.WildFlyInitialContextFactory"); InitialContext context = new InitialContext(properties); // Look up an Jakarta Enterprise Beans and invoke one of its methods // Note that this code is the same as before RemoteCalculator statelessRemoteCalculator = (RemoteCalculator) context.lookup( "ejb:/ejb-remote-server-side//CalculatorBean!" + RemoteCalculator.class.getName()); int sum = statelessRemoteCalculator.add(101, 202);-----
现在,您可以删除过时的
jboss-ejb-client.properties文件,因为不再需要该文件。
9.4.3.2. 以编程方式迁移 Jakarta Enterprise Beans 客户端 复制链接链接已复制到粘贴板!
使用以下步骤以编程方式迁移 Jakarta Enterprise Beans 客户端。
流程
- 提供直接在应用程序代码中直接连接到远程服务器所需的信息。
示例:使用编程方法的代码
// Create the authentication configuration
AuthenticationConfiguration ejbConfig = AuthenticationConfiguration.empty().useName("bob").usePassword("secret");
// Create the authentication context
AuthenticationContext context = AuthenticationContext.empty().with(MatchRule.ALL.matchHost("127.0.0.1"), ejbConfig);
// Create a callable that invokes the Jakarta Enterprise Beans
Callable<Void> callable = () -> {
// Create an InitialContext
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
properties.put(Context.PROVIDER_URL, "remote+http://127.0.0.1:8080");
InitialContext context = new InitialContext(properties);
// Look up the Jakarta Enterprise Beans and invoke one of its methods
// Note that this code is the same as before
RemoteCalculator statelessRemoteCalculator = (RemoteCalculator) context.lookup(
"ejb:/ejb-remote-server-side//CalculatorBean!" + RemoteCalculator.class.getName());
int sum = statelessRemoteCalculator.add(101, 202);
...
return null;
};
// Use the authentication context to run the callable
context.runCallable(callable);
现在,您可以删除过时的 jboss-ejb-client.properties 文件,因为不再需要该文件。