Как я могу решить EJBCLIENT000079 Исключение в потоке "main" javax.ejb.NoSuchEJBException?

Я хочу сделать EJB-проект ИСПОЛЬЗОВАТЬ Intellij IDEA. Но в этом была ошибка. Мой проект имеет модель буксировки в проекте. Один - сервер, а другой - клиент. Я хочу запустить сервер и запустить клиент для выполнения функции sayHello., но получить не удалось.

Мой интерфейс SessionBean и интерфейс клиента

package com.ejb;

import javax.ejb.Remote;

@Remote
public interface HelloWorld {
    public String sayHello(String world);
}

Мой класс SessionBean

import com.ejb.HelloWorld;

import javax.ejb.Stateless;

@Stateless(name = "HelloWorldEJB")
public class HelloWorldBean implements HelloWorld {
    public HelloWorldBean() {
    }

    @Override
    public String sayHello(String world) {
        return "hello"+world;
    }
}

Мой клиент Класс

package com.ejb;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Hashtable;

public class HelloWorldClient {
    private static HelloWorld lookupRemoteStatelessEjbBean() throws NamingException {
        final Hashtable jndiProperties = new Hashtable();
        jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        jndiProperties.put("jboss.naming.client.ejb.context", true);
        final Context context = new InitialContext(jndiProperties);
        String namespace="ejb:/EJBServer_war_exploded/HelloWorldEJB!com.ejb.HelloWorld";
        return (HelloWorld) context.lookup(namespace);
    }
    public static void main(String[] args) throws NamingException {
        HelloWorld helloWorld = lookupRemoteStatelessEjbBean();
        System.out.println(helloWorld);
        String s = helloWorld.sayHello("world");
        System.out.println(s);
    }
}

Мои свойства (это свойства помещены в папку src точно)

endpoint.name=client-endpoint
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
remote.connection.default.username=admin
remote.connection.default.password=123456

Сначала я запускаю сервер и IntelliJ. IDEA автоматически помещает военную папку в JBOSS(WildFly) 11. Я посетил веб-сайт EJB amdin, а военная папка была точно на сервере. Код ошибки

Exception in thread "main" javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request for EJB StatelessEJBLocator for "/EJBServer_war_exploded/HelloWorldEJB", view is interface com.ejb.HelloWorld, affinity is None

Я не знаю, как это решить, и я искал на bing и google. Ни у кого не было такого же вопроса, как я могу решить это?

2 ответа

Для WildFly11 используйте следующую конфигурацию:

jndiProperties.put (Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory"); jndiProperties.put (Context.PROVIDER_URL, "HTTP-Remoting:// локальный:8080");

вместо:

jndiProperties.put (Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); jndiProperties.put ("jboss.naming.client.ejb.context", true);

Насколько мне известно, замените String

namespace="ejb:/EJBServer_war_exploded/HelloWorldEJB!com.ejb.HelloWorld";

со строкой

namespace="ejb:/EJBServer_war_exploded/HelloWorldBean!com.ejb.HelloWorld";
Другие вопросы по тегам