jakarta-ee - 如何解决线程 "main"javax.ejb.NoSuchEJBException 中的 EJBCLIENT000079 异常?

标签 jakarta-ee intellij-idea jboss ejb wildfly

我想用 Intellij IDEA 做一个 EJB 项目。但是有一个错误。我的项目在一个项目中有两个模型,一个是服务器,另一个是客户端。我想启动服务器并运行客户端来执行 sayHello 函数,但失败了。

我的 SessionBean 接口(interface)和客户端接口(interface)

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自动将war文件夹放入JBOSS(WildFly) 11.我访问了EJB amdin网站,war文件夹完全在服务器中。
错误代码是
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上搜索过。没有人有同样的问题,我该如何解决?

最佳答案

对于 WildFly11,使用以下配置:

jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
jndiProperties.put(Context.PROVIDER_URL,"http-remoting://localhost:8080");

而不是:

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

关于jakarta-ee - 如何解决线程 "main"javax.ejb.NoSuchEJBException 中的 EJBCLIENT000079 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47618142/

相关文章:

java - 如何将文件从 Java 客户端传输到 Java 服务器?

java - Tomcat 9.027 : port out of range

java - 无法解析符号日历(Java 中的 Google 日历 api)

intellij-idea - delayWhen 已弃用 RxJs

java - 无法在 Eclipse 上安装 glassfish 支持

java - 注入(inject)任务的 EJB 返回 UnsatisfiedResolutionException

rest - 在 jersey 1.8 和 tomcat 7 Resful 和 eclipse 中找不到 404

Java ws Jboss 7 SOAP 头

java - JBoss 5.1.0.GA - 重定向到端口 443 不起作用,始终重定向到 8443

java - 从 JavaScript (AJAX) 调用和使用 JBoss Web 服务