`
kingquake21
  • 浏览: 268619 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在J2SE的客户端使用JNDI查找部署在JBOSS上的EJB3.0

阅读更多

这个问题缠了我好久,写好了EJB却总是无法在J2SE的客户端进行调用。在JBOSS的JNDIView中也能看到我那部署好的EJB,可是每当运行下面的代码却总是报同样的异常。

InitialContextctx=newInitialContext();
HelloWorldfileservice
=(HelloWorld)ctx.lookup(HelloWorld.class.getName());
javax.naming.CommunicationException[Rootexceptionisjava.lang.ClassNotFoundException:org.jboss.proxy.ejb.EJBMetaDataImpl(nosecuritymanager:RMIclassloaderdisabled)]
atorg.jnp.interfaces.NamingContext.lookup(NamingContext.java:
713)
atorg.jnp.interfaces.NamingContext.lookup(NamingContext.java:
572)
atjavax.naming.InitialContext.lookup(InitialContext.java:
351)
attest.ServiceTest.main(ServiceTest.java:
33)
Causedby:java.lang.ClassNotFoundException:org.jboss.proxy.ejb.EJBMetaDataImpl(nosecuritymanager:RMI
classloaderdisabled)
atsun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:
371)
atsun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:
165)
atjava.rmi.server.RMIClassLoader$
2.loadClass(RMIClassLoader.java:620)
atjava.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:
247)
atsun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:
197)
atjava.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:
1538)
atjava.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:
1460)
atjava.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1693)
atjava.io.ObjectInputStream.readObject0(ObjectInputStream.java:
1299)
atjava.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:
1912)
atjava.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1836)
atjava.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1713)
atjava.io.ObjectInputStream.readObject0(ObjectInputStream.java:
1299)
atjava.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:
1912)
atjava.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1836)
atjava.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1713)
atjava.io.ObjectInputStream.readObject0(ObjectInputStream.java:
1299)
atjava.io.ObjectInputStream.readObject(ObjectInputStream.java:
339)
atjava.rmi.MarshalledObject.get(MarshalledObject.java:
135)
atorg.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:
57)
atorg.jnp.interfaces.NamingContext.lookup(NamingContext.java:
637)
...
3more

发现org.jboss.proxy.ejb.EJBMetaDataImpl这个class无法找到,估计很可能是有一些必要的包没有导进去。google了一下,有人提示说问题很有可能是没有导入client结尾的包。试着导入了下面这些包(都在JBOSS根目录下)

/client/jboss-client.jar
./client/jboss-common-client.jar
./client/jboss-transaction-client.jar
./client/jbossmq-client.jar
./client/jbosssx-client.jar
./client/jmx-invoker-adaptor-client.jar
./client/jnp-client.jar

最后发现是jboss-client.jar 里面包含的org.jboss.proxy.ejb.EJBMetaDataImpl这个类,导入运行成功。

yeah,留下脚印

分享到:
评论

相关推荐

    ejb3.0初学者必看

    - 创建简单的EJB 3.0项目,并在JBoss上部署运行。 ##### 3. **熟悉JBoss目录结构** - `bin`: 启动脚本等。 - `conf`: 配置文件。 - `lib`: 第三方库文件。 - `deploy`: 部署文件夹。 ##### 4. **部署应用** - 将...

    EJB3.0中文资料

    - 创建一个简单的EJB项目,并在JBoss AS中部署该项目以测试EJB 3.0功能。 - 示例代码可以包括基本的会话Bean或实体Bean。 ##### 2.3 熟悉JBoss的目录结构 - `bin`: 启动脚本和其他可执行文件。 - `lib`: 第三方库...

    EJB client调用EJB3 .doc

    当EJB3应用部署在JBoss服务器上,且调用者也在同一个环境中时,调用EJB相对简单。在这种情况下,Web应用可以作为客户端直接调用EJB。Web应用打包成WAR文件,并部署到JBoss。需要注意的是,由于Web应用和EJB都在同一...

    ejb3·0入门经典教程

    ### EJB3.0入门经典教程知识点概览 #### 一、EJB3.0简介与环境搭建 **1.1 ENTERPRISE JAVA BEANS (EJB) 概念** EJB(Enterprise JavaBeans)是Java平台上的企业级组件模型,用于构建分布式企业应用程序。EJB3.0...

    开发基于JBoss的J2EE应用

    本文将结合实践经验,详细阐述如何在JBoss 3.2.1环境下进行J2EE应用开发,重点关注数据源配置、日志管理、EJB调优等方面的知识点。 #### 二、环境搭建与基础配置 **1. 安装前提** 确保目标机器已安装Java 2 ...

    jBoss+tomcat学习笔记大全,jBoss+tomcat的帮助文档

    接下来,我们将深入了解如何使用 jBoss 和 Tomcat 开发和部署 EJB(Enterprise JavaBeans)应用。 ##### 1. 示例代码结构 - **hello.jar**:包含所有的示例程序源代码、配置文件以及编译后的 class 文件。 - `...

    EJB3.pdf EJB3 文档 资料

    此外,熟悉JBOSS的目录结构对于部署和管理应用至关重要,包括了解如何在JBOSS中部署应用、如何在独立的TOMCAT或J2SE环境中调用EJB,以及如何让发布在JBOSS中的WEB应用调用EJB等关键步骤。 #### 三、EJB3基础知识与...

    开发基于JBoss的J2EE应用.pdf

    本文详细介绍了如何在JBoss 3.2.1环境中配置数据源、日志输出以及EJB调优等内容,旨在帮助开发者更好地掌握基于JBoss的J2EE应用开发技巧。虽然JBoss 3.2.1版本较老,但其所提供的特性及配置方法对当前版本仍然具有...

    走进 JBoss 服务器

    这是因为JBoss需要运行在一个兼容J2SE 1.3或以上版本的环境中。推荐使用最新版本的JDK以获得更好的性能和支持。 - **开发工具**: - **Ant**:版本1.5或更高,这是一个构建工具,用于自动化编译、测试、部署等任务...

    JBoss簡單概括

    ### JBoss:基于J2EE的开源应用服务器详解 #### JBoss概述 JBoss是一款全球开发者...JBoss的强大功能与灵活配置使其成为企业级应用开发的首选平台,无论是在技术层面还是商业应用上,都展现出了其无可比拟的优势。

    jboss-presentation

    JBoss支持多种关键技术和服务,包括JNDI、Servlet/JSP(使用Tomcat或Jetty)、EJB、JTS/JTA、JCA、JMS等,同时兼容集群(如JavaGroups)、Web服务(如Axis)和IIOP(JacORB)集成。 ### 版本与许可 JBoss的生产...

    如何让J2EE程序脱离容器

    虽然完全实现JNDI可能需要一个JNDI服务器,如JBoss的JNP服务器,但开发者可以利用轻量级的替代方案,比如在本地启动一个简单的JNDI服务器,并配置相应的环境以供应用程序使用。例如,清单1展示了配置JNP服务器所需的...

    自学Java的学习路线.pdf

    JNDI和EJB则涉及到企业级服务的查找和部署,EJB尤其适用于实现业务逻辑组件。 设计模式在Java开发中至关重要,它能帮助编写可维护、可扩展的代码。通过阅读和理解开源项目(如jive论坛、petstore、dune等)的源码,...

    【J2EE OA】 项目开发日记.docx

    - JBoss Application Server: 作为应用服务器,提供了EJB容器、JMS实现等功能。 - Ant: 构建工具,用于自动化构建过程。 - Struts (MVC框架): 用于构建MVC架构的Web应用。 - JSP (JavaServer Pages): 用于生成...

    J2EE入门学习方法指导

    JNDI(Java Naming and Directory Interface)与EJB(Enterprise JavaBeans)结合使用,EJB是J2EE中的企业级组件,用于处理分布式计算和事务管理。 学习EJB时,可以参考《精通EJB》一书。同时,理解并运用设计模式...

Global site tag (gtag.js) - Google Analytics