无法实例化类:org.jnp.interfaces.NamingContextFactory

2024-04-30

这是我的代码:

扬声器远程.java

package test;
import javax.ejb.Remote;

@Remote
public interface SpeakerRemote {
    String sayAPhrase( String phrase );
}

扬声器Bean.java

package test;
import javax.ejb.Stateless;

@Stateless
public class SpeakerBean implements SpeakerRemote {
    @Override
    public String sayAPhrase( String phrase ){
         return "Speaker Service:\t" + phrase;
    }
}

我用maven组装的。这里我向您展示调用部分:

调用者.java

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

public class Invoker {
    public static InitialContext getContext() throws NamingException {
        final Properties properties = new Properties();
        properties.put( Context.INITIAL_CONTEXT_FACTORY,
            "org.jnp.interfaces.NamingContextFactory" );
        properties.put( Context.PROVIDER_URL, "jnp://127.0.0.1:1099" );
        return new InitialContext( properties );
    }
}

主程序.java

import test.SpeakerRemote;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class Main {
    public static void main( String... args ) {
        try {
            InitialContext context = Invoker.getContext();
            SpeakerRemote speaker = ( SpeakerRemote ) context.lookup( "SpeakerBean/remote" );
            System.out.println( speaker.sayAPhrase( "Hello, World!" ) );
        }
        catch ( NamingException e ) {
            e.printStackTrace();
        }
    }
}

启动这个应用程序后,我收到了这个异常:

“无法实例化类:org.jnp.interfaces.NamingContextFactory [根异常是 java.lang.ClassNotFoundException:org.jnp.interfaces.NamingContextFactory]”

请帮助我,因为我真的需要理解它!

附:我使用jboss 7.1.1 Final + EJB 3.1 + Maven 3.1.1 + Java 1.7 + Win7


阅读 JBoss 7.1 的文档

通过 JNDI 进行远程 EJB 调用 - EJB 客户端 API 或远程命名项目 https://docs.jboss.org/author/display/AS71/Remote+EJB+invocations+via+JNDI+-+EJB+client+API+or+remote-naming+project

从 $JBOSS_HOME/bin/client 添加到类路径 jboss-client.jar

调用者.java

Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
properties.put(Context.PROVIDER_URL,"remote://127.0.0.1:4447");
// username
properties.put(Context.SECURITY_PRINCIPAL, "user");
// password
properties.put(Context.SECURITY_CREDENTIALS, "password");
// This is an important property to set if you want to do EJB invocations via the remote-naming project
properties.put("jboss.naming.client.ejb.context", true);
// create a context passing these properties
return new InitialContext(properties);

主程序.java

// lookup the bean    
SpeakerRemote speaker = (SpeakerRemote) context.lookup("myapp/myejbmodule/SpeakerBean!test.SpeakerRemote);
System.out.println( speaker.sayAPhrase( "Hello, World!" ) )

其他方法:使用 JNDI 从远程客户端调用 EJB https://docs.jboss.org/author/display/AS72/EJB+invocations+from+a+remote+client+using+JNDI

添加到类路径文件 jboss-ejb-client.properties

jboss-ejb-客户端

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
#if you test on local machine
remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS=JBOSS-LOCAL-USER

remote.connections=default
remote.connection.default.host=127.0.0.1
remote.connection.default.port = 4447
remote.connection.default.username=user
remote.connection.default.password=password

调用者.java

final Hashtable<String, String> props = new Hashtable<String, String>();
props.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
return new InitialContext(props);

主程序.java

SpeakerRemote speaker = (SpeakerRemote) context.lookup("ejb:myapp/myejbmodule/SpeakerBean!test.SpeakerRemote);
System.out.println( speaker.sayAPhrase( "Hello, World!" ) )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法实例化类:org.jnp.interfaces.NamingContextFactory 的相关文章

随机推荐

  • Java正则表达式以数字和固定长度开头的字符串

    我制作了一个正则表达式来检查 String 的长度 所有字符都是数字并以数字开头 例如 123 以下是我的表情 REGEX 123 d 9 但它无法检查字符串的长度 它仅验证那些长度为 9 并以 123 开头的字符串 但如果我传递字符串 1
  • 如何在WPF中使用Application.Exit事件?

    我需要删除一些特定文件 然后用户关闭 WPF 中的程序 所以我从这里尝试了 MDSN 代码http msdn microsoft com en us library system windows application exit aspx
  • csharp类可以像java类一样“继承”xml文档吗?

    我正在向一些csharp代码添加注释 并且我正在使用 net 或其他东西 提供的xml语言 我有一个接口和一些实现类 我在界面中有一个方法 它有一个注释 在实现类中没有对实现方法进行注释 当人们在java中这样做时 javadoc在生成文档
  • 如何将 Bootstrap 轮播指示器更改为点?

    我正在使用 Bootstrap 4 Beta 2 版本来做轮播 代码如下所示 ol class carousel indicators li class active li li li li li ol And the
  • pthread_join() 中的阻塞

    根据手册页 pthread join 函数应暂停调用的执行 线程直到目标线程终止 除非目标线程 已经终止了 因此 据我了解 调用进程将阻塞 直到指定的线程退出 现在考虑以下代码 pthread t thrs NUMTHREADS for i
  • Android 中的离屏绘图

    android 中是否可以像 Objective C 中的 imageContext 那样进行离屏绘图 如果有的话 请告诉我链接或某种提示 多谢 我相信您正在寻找Canvas http developer android com refer
  • Mercurial revset 用于在提交后查找下一个标签

    我如何找到next tag在特定变更集修订之后 例如 如果变更集中引入了错误abcdef123456 如何找到包含此错误的第一个版本 标签 我想我可以使用HG 转速 https hg mozilla org mozilla central
  • 模拟网络断开连接以在本地测试分布式应用程序分区

    我有几个在本地主机上运行的分布式应用程序实例 每个实例都通过某些端口与其他实例通信 所有实例一起构成一个整体 我实际上是在谈论动物园管理员 http hadoop apache org zookeeper 在 Linux 上运行 现在我想编
  • iOS 应用程序的有效 UI 样式[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的问题很简单 在android中 我们可以将xml样式表与布局分离 以便它可以在任何地方重用 并且可
  • 在Android应用程序中导入Java项目?

    即使 Java 项目中的某些类在普通 Android 项目中无法识别 我是否可以在 Android 项目中使用 Java 项目 例如javax xml包 我认为有两种可能性 使用该 java 项目创建一个 jar 并将其导入到 androi
  • 使用 python 对 Robot Framework 中的测试套件中的每个测试用例进行测试设置和拆卸

    我是机器人框架的新手 有人可以帮我看看是否可以为包含大约 20 个测试用例的测试套件中的每个测试用例进行测试设置和拆卸 有人可以用例子解释一下吗 这是一个例子 包含拆解的测试套件 如果你想最后执行每个测试用例 你可以错过它的拆卸 请阅读相应
  • 如何将 C# 6 与网站项目类型一起使用?

    更新了现有的Web Site项目类型Visual Studio 2015 我将Framework更改为4 6 然后我希望在我的代码隐藏文件中可以使用所有这些新功能 不幸的是我收到如下错误 错误 CS8026 功能 表达式主体属性 在 C 5
  • 与 pandas 的时间序列相关性

    我有一些颗粒物传感器和 CSV 其时间序列如下 传感器A date value date 2017 11 30 00 00 00 30 11 17 0 00 49 2017 11 30 00 02 00 30 11 17 0 02 51 2
  • 多行 JTable 单元格在编辑期间不是多行的

    我正在开发一个应用程序 它有一个需要多行单元格的 JTable 因此 我扩展了 JTextArea 一切都显示出来了 但是当我尝试编辑单元格时 文本显示为单行 编辑后变为多行 我希望文本在编辑过程中保持多行 有没有办法做到这一点 创建您的表
  • Jquery 文件上传 - $_FILES 数组为空

    使用 Jquery 文件上传 它正在 工作 并上传图像并显示拇指 但是 当我在处理程序中提交表单时 如果我转储 FILES 则那里什么也没有 我基本上使用的是 Basic Plus 示例 并将 autoUpload 设置为 false 我希
  • 日期获取自定义周开始日的周数

    如果我有自定义周开始日而不是星期一 应该如何更改 Date 类的 getWeekNumber 原型 当前查找 ISO 周数的代码 Date prototype getWeekNumber function Create a copy of
  • Mono.Cecil 类似 Type.GetInterfaceMap 之类的东西吗?

    系统 反射 类型包含获取接口映射 http msdn microsoft com en us library system type getinterfacemap aspx这有助于确定哪些方法从接口实现某些方法 Does 莫诺 塞西尔包含
  • 检测空 UITextField 中的退格键

    Is there any way to detect when the Backspace Delete key is pressed in the iPhone keyboard on a UITextField that is empt
  • 如何将嵌套的 javascript 对象转换为仅第一级属性对象?

    我有以下对象inputObj我想将其转换为一个简单的对象 例如outputObj var inputObj a 1 b true c string1 d e string2 f false g 5 h i 7 j string3 k nam
  • 无法实例化类:org.jnp.interfaces.NamingContextFactory

    这是我的代码 扬声器远程 java package test import javax ejb Remote Remote public interface SpeakerRemote String sayAPhrase String ph