当前位置: 首页 > 知识库问答 >
问题:

如何在客户端的WildFly服务器中查找EJB

邹斌
2023-03-14

我想知道如何使用JNDI从远程客户端查找位于WildFly服务器中的EJB。

这是我用来初始化上下文的

jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
jndiProps.put(Context.PROVIDER_URL, "http-remoting://192.168.0.15:8080");
jndiProps.put("jboss.naming.client.ejb.context", true);
Context ctx = new InitialContext(jndiProps);

这是部署服务器时的控制台输出:

21:08:29,352 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-10) JNDI bindings for session bean named DataBaseServiceImpl in deployment unit deployment "AnalyseExcelServeur.war" are as follows:

java:global/AnalyseExcelServeur/DataBaseServiceImpl!serveur.database.DataBaseService
java:app/AnalyseExcelServeur/DataBaseServiceImpl!serveur.database.DataBaseService
java:module/DataBaseServiceImpl!serveur.database.DataBaseService
java:jboss/exported/AnalyseExcelServeur/DataBaseServiceImpl!serveur.database.DataBaseService
java:global/AnalyseExcelServeur/DataBaseServiceImpl
java:app/AnalyseExcelServeur/DataBaseServiceImpl
java:module/DataBaseServiceImpl

我尝试了很多组合,但每次我都得到了javax。命名。NameNotFoundException:

javax.naming.NameNotFoundException: exported/AnalyseExcelServeur/DataBaseServiceImpl!serveur.database.DataBaseService -- service jboss.naming.context.java.jboss.exported.exported.AnalyseExcelServeur."DataBaseServiceImpl!serveur.database.DataBaseService"
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:104)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:202)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179)
at org.jboss.naming.remote.protocol.v1.Protocol$1.handleServerMessage(Protocol.java:127)
at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.run(RemoteNamingServerV1.java:73)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

我没有定义应用程序名称或模块名称。

  • 服务器的项目名称是:AnalyseExcelServeur
  • EJB的名称是DataBaseServiceImpl
  • EJB实现位于包serveur.database的DataBaseService

下面是我如何声明EJB的:

@Stateless
@Remote(DataBaseService.class)
public class DataBaseServiceImpl extends SessionDB implements DataBaseService

在客户端,DataBaseService接口的实现位于包中compte.remote.ejb

我不知道我是否必须使用ejb:/appname/modulename/bean/location或仅仅是/appname/modulename/bean/location或其他任何东西。。。

也许我必须把一个文件放进。war声明EJB。。。

共有3个答案

子车桐
2023-03-14

我做到了!!问题是,我为ejb使用了两个不同的类路径。

服务器端的ejb在DataBaseServiceserveur.database.

客户端的ejb接口是完整的。遥远的ejb。数据库服务

它们应该位于相同的路径中,所以我将客户端的ejb重新定位到一个名为serveur的包中。数据库和工作!

谷梁嘉悦
2023-03-14

希望这有助于解决问题。(它用于查找JMS队列,但也可以用同样的方法查找Bean。)

http://www.mastertheboss.com/jboss-server/jboss-jms/how-to-code-a-remote-jms-client-for-wildfly-8

谢啦

诸新霁
2023-03-14

也许你应该看看留档:

https://docs.jboss.org/author/display/WFLY8/EJB使用JNDI从远程客户端调用

 类似资料:
  • 问题内容: 我的客户端PC通过以太网上的套接字作为服务器PC连接,如何从服务器端代码中找到该客户端的IP。 服务器在新线程中为每个客户端分配一个套接字。 当我在客户端套接字上执行操作时,我仍然会获得服务器IP地址。(是服务器在当前客户端连接上产生的套接字,并将其传递给新的线程)。 问题答案: 我相信您想改用远程地址:

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 我将创建一个身份验证服务器,它本身与一组不同的Oauth2.0服务器交互。Netty似乎是在这里实现网络部分的一个很好的候选者。但在开始之前,我需要澄清一些关于netty的细节,因为我是新手。例行程序如下: > < li> 服务器接受来自客户端的HTTPS连接。 然后,不关闭第一个连接,它通过HTTPS与远程OAuth2.0服务器建立另一个连接并获取数据 毕竟,服务器将结果发送回客户端,客户端应该

  • 我有以下服务: EurekaServer—承载eureka发现服务器 是否有办法获取客户端服务的ip,以便我可以从Finder服务向其发出请求。 我知道有一种方法可以从EurekaServer找到InstanceInfo,我正在考虑在eureka服务器中创建一个控制器,在那里您可以传递服务ID并获得服务的实例ip。这样,Finder-service只需要知道服务ID和eureka ip,因为它在那

  • 问题内容: 我正在尝试使用python开发客户端/服务器解决方案,服务器必须使用Avahi广播服务可用性。我正在使用以下代码来发布服务: 对于客户端,我正在尝试通过以下方式搜索服务: 但是,客户端没有检测到服务何时启动。有什么想法我做错了吗? 问题答案: 我发现该代码按预期工作。我有防火墙规则阻止avahi相关的发布。

  • 我试图了解服务器-客户端网络如何为实时多人游戏工作。 假设我正在构建一个实时多人游戏,比如FPS。 如果玩家A向玩家B开枪,后端< code >服务器需要告诉玩家B他们被击中了。 我知道如何让玩家 A 告诉后端服务器他开了一枪,只是向服务器发送请求,但是如何让后端告诉玩家 他们被枪杀了? 玩家B是否必须每0.1秒检查一次后端以查看是否发生了什么事情,或者是否有更有效的方法?