Программная проблема удаленного вызова ejb с клиентом WildFly Naming? - PullRequest
0 голосов
/ 17 июня 2019

Является ли wildfly-config.xml обязательным для WildFly Naming Client?

Я удалил его и использовал программный подход из-за этого:

wildfly-config.xml содержит кредиты пользователей, которыебудет доступен как основной в EJB.У нас есть несколько пользователей, использующих один и тот же клиент.Также используется пользовательская область безопасности.Таким образом, кредиты пользователей будут меняться каждый раз.

Но поиск не удается с помощью программного подхода, но работает с подходом wildfly-config.xml.

Вот здесь wildfly-config.xml:

<configuration> 

    <authentication-client xmlns="urn:elytron:1.0"> 

        <authentication-rules> 

            <rule use-configuration="default"/> 

        </authentication-rules> 

        <authentication-configurations> 

            <configuration name="default">

<sasl-mechanism-selector selector="PLAIN"/>

                 <providers>

                     <use-service-loader />

                 </providers>

<set-user-name name="ejbuser1"/> 

                <credentials> 

                    <clear-password password="*****"/> 

                </credentials>

<set-mechanism-realm name="SSLRealm" />

            </configuration> 

        </authentication-configurations> 

    </authentication-client> 

    <jboss-ejb-client xmlns="urn:jboss:wildfly-client-ejb:3.0"> 

        <connections> 

            <connection uri="remote+http://localhost:8080" /> 

        </connections> 

    </jboss-ejb-client> 

</configuration>

После работы я удалил этот файл и добавил код для программного подхода:

    // create your authentication configuration

    AuthenticationConfiguration namingConfig = AuthenticationConfiguration.empty()

    .setSaslMechanismSelector(SaslMechanismSelector.NONE.addMechanism("PLAIN"))

    .useRealm("SSLRealm")

    .useName(username)

    .usePassword(password);



    // create your authentication context

    AuthenticationContext context = AuthenticationContext.empty()

    .with(MatchRule.ALL.matchHost("localhost"), namingConfig);



    // create a callable that creates and uses an InitialContext

    Callable<Void> callable = () -> {

        Properties properties1 = new Properties();

        properties1.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");

        properties1.put(Context.PROVIDER_URL, ejbProperties.get("java.naming.provider.url"));

        ctx = new InitialContext(properties1);


        return null;

    };



    // use your authentication context to run your callable

    try {

       context.runCallable(callable);
       // ERROR HERE
       appBean = (AppRemote) ctx.lookup(getJNDIPrefix() + "AppBean!" + AppRemote.class.getName());
  } catch (NamingException e) {

       throw e;

  } catch (Exception e) {

       e.printStackTrace();

  }

Затем получил следующую ошибку:

Причина: javax.security.sasl.SaslException: Аутентификация не удалась: ни один из механизмов, представленных сервером (PLAIN), не поддерживается в org.jboss.remoting3.remote.ClientConnectionOpenListener $ Capabilities.handleEvent (ClientConnectionOpenListener.java:444) в org.jboss.remoting3.remote.ClientConction.Переменныеnio.NioSocketConduit.handleReady (NioSocketConduit.java:89) в org.xnio.nio.WorkerThread.run (WorkerThread.java:591) в ... асинхронный вызов ... (неизвестный источник) в org.jboss.remoting3.EndpointImpl.connect (EndpointImpl.java:571) в org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:537) в org.jboss.remoting3.ConnectionInfo $ None.getConnection (ConnectionInfo.java:82) в org.jboss.remoting3.ConnectionInfo.getConnection (ConnectionInfo.java:55) в org.jboss.remoting3.EndpointImpl.doGetConnection (EndpointImpl.java:488) в org.jboss.remoting3.EndpointImpl.getConnectedIdentity (EndpointImpl.java:434) в org.jboss.remoting3.UncloseableEndpoint.getConnectedIdentity (Unssava.bo.Endpoint.getConnectedIdentity (Endpoint.java:123) в org.jboss.ejb.protocol.remote.RemoteEJBReceiver.lambda $ getConnection $ 2 (RemoteEJBReceiver.java:185) в java.security.AccessController.doPrivileged

Есть предположения, что может быть не так?

...