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

Jboss JNDI查找字符串

锺博耘
2023-03-14

我一直试图在JBOSS AS7.1.1中创建一个连接到EJB的独立java应用程序。我正在学习本教程:https://docs.jboss.org/author/display/as71/ejb+invocations+from+a+remote+client+using+jndi

问题是,我无法连接到EJB。我总是得到一个IllegalStateException,如下所示

Exception in thread "main" java.lang.IllegalStateException: No EJB receiver available for handling [appName:testeWeb-web-0.0.1-SNAPSHOT,modulename:testeWeb-ejb-0.0.1-SNAPSHOT,distinctname:] combination
at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:485)
at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:84)
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:175)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:122)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:107)
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:90)
at com.sun.proxy.$Proxy0.getSenha(Unknown Source)
at testes.TesteCodigo.main(TesteCodigo.java:94)

事情是。我不知道如何正确地形成JNDI查找字符串。下面是我使用私有静态TesteFacade lookupFacade()抛出NamingException{final Hashtable jndiProperties=new Hashtable();jndiProperties.put(context.url_pkg_prefixes,“org.jboss.ejb.client.naming”);

    final Context context = new InitialContext(jndiProperties);

    return (TesteFacade) context.lookup("ejb:testeWeb-web-0.0.1-SNAPSHOT/testeWeb-ejb-0.0.1-SNAPSHOT//TesteFacadeImpl!facade.TesteFacade");
}

下面是该EJB的部署日志:

java:global/testeWeb/testeWeb-ejb-0.0.1-SNAPSHOT/TesteFacadeImpl!facade.TesteFacade
java:app/testeWeb-ejb-0.0.1-SNAPSHOT/TesteFacadeImpl!facade.TesteFacade
java:module/TesteFacadeImpl!facade.TesteFacade
java:jboss/exported/testeWeb/testeWeb-ejb-0.0.1-SNAPSHOT/TesteFacadeImpl!facade.TesteFacade
java:global/testeWeb/testeWeb-ejb-0.0.1-SNAPSHOT/TesteFacadeImpl
java:app/testeWeb-ejb-0.0.1-SNAPSHOT/TesteFacadeImpl
java:module/TesteFacadeImpl

我应该如何创建JNDI查找字符串?

共有1个答案

谯灿
2023-03-14

在jndiProperties中,您缺少EJB上下文初始化,请尝试以下方法:

    Properties props = new Properties();
    props.put("jboss.naming.client.ejb.context", true);
    props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
    props.put(Context.PROVIDER_URL,  "remote://localhost:4447");
    props.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");

我还认为EJB url不正确,请尝试在以下地址查找EJB:

ejb:testeWeb/testeWeb-ejb-0.0.1-SNAPSHOT/TesteFacadeImpl!facade.TesteFacade
 类似资料:
  • 主要内容:根据字符查找,根据索引查找在给定的字符串中查找字符或字符串是比较常见的操作。字符串查找分为两种形式:一种是在字符串中获取匹配字符(串)的索引值,另一种是在字符串中获取指定索引位置的字符。 根据字符查找 String 类的 indexOf() 方法和 lastlndexOf() 方法用于在字符串中获取匹配字符(串)的索引值。 1. indexOf() 方法 indexOf() 方法用于返回字符(串)在指定字符串中首次出现的索

  • 问题 你需要搜索一个字符串,并返回匹配的起始位置或匹配值本身。 解决方案 有几种使用正则表达式的方法来实现这个功能。其中一些方法被称为 RegExp 模式或对象还有一些方法被称为 String 对象。 RegExp 对象 第一种方式是在 RegExp 模式或对象中调用 test 方法。test 方法返回一个布尔值: match = /sample/.test("Sample text") # =>

  • 问题 你想在一条消息中查找某个关键字第一次或最后一次出现的位置。 解决方案 分别使用 JavaScript 的 indexOf() 和 lastIndexOf() 方法查找字符串第一次和最后一次出现的位置。语法: string.indexOf searchstring, start message = "This is a test string. This has a repeat or two

  • 问题内容: 我正在寻找一种在字符串中查找JSON数据的方法。像wordpress简码一样思考它。我认为最好的方法是使用正则表达式。我不想解析JSON,只需查找所有出现的事件。 正则表达式中是否有办法使括号的数量匹配?目前,当我嵌套对象时遇到了这个问题。 演示的快速示例: 结果,我想要两个JSON字符串。谢谢! 问题答案: 从给定的文本中提取JSON字符串 由于您正在寻找一种简单的解决方案,因此可以

  • 我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串在java中是否包含“12,3,14”。 我的代码:

  • 问题内容: 我想计算一个字符串中某个字符的出现次数,假设我有一个字符串“ aaaab”,我如何计算其中的a数量? 问题答案: 如果不使用正则表达式,则代码看起来更易于阅读。 现在在您的字符串中包含数字“ a”。并且,这在最佳时间执行。 正则表达式非常适合模式匹配。但是只需定期循环即可在此处完成工作。