Удаленный EJB на Wildfly

#ejb #wildfly

#ejb #wildfly

Вопрос:

У меня есть автономное приложение, которое подключается к серверу Wildfly, чтобы получить EJB прокси. Это проект maven, поскольку у меня есть зависимость:

 <dependency>
    <groupId>org.wildfly</groupId>
    <artifactId>wildfly-ejb-client-bom</artifactId>
    <version>8.0.0.Final</version>
    <type>pom</type>
</dependency>
  

Чтобы получить EJB, который я использую:

 final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
env.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
env.put("jboss.naming.client.ejb.context", true);
InitialContext remoteContext = new InitialContext(env);

String jndi = "jndi";
RemoteInterface lookup = (RemoteInterface) remoteContext.lookup(jndi);
  

Все работает нормально, но сервер не запрашивает имя пользователя и пароль. Как добавить аутентификацию?

Ответ №1:

Это работает для вас, потому что вы, вероятно, тестируете на localhost. Если вы попытаетесь подключиться к любому удаленному серверу, то это приведет к сбою. Удаленные вызовы EJB WildFly должны быть аутентифицированы по умолчанию, AFAIK.

Вам нужно добавить эти свойства:

 env.put("java.naming.security.principal", "user");      
env.put("java.naming.security.credentials", "pass");
  

Вам также необходимо добавить этого пользователя для WildFly.