前几天看完黎活明老师写的EJB3入门经典,今天对照课本上的例子,自己实现了一下,其中遇到几个问题,不过最后还是解决了,这里跟大家分享一下,也希望大家能够共同探讨这方面的知识。
环境:JDK5.0+JBOSS4.2.2GA+ECLIPSE3.2
如何在JBOSS中部署EJB,这里就不写了。不过,对于JBOSS相关配置,这里还是带一下:
JBOSS默认的端口是8080,并且JBOSS4.2.2GA默认只能通过http://localhost:8080/或者http://127.0.0.1:8080/来访问,需要修改配置文件JBOSS_HOME的\server\default\deploy\jboss-web.deployer\server.xml 中的如下配置:
引用
<Connector port="8080" address="0.0.0.0"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
将其中的${jboss.bind.address}改为0.0.0.0 ,才能用http://ip:port的方式访问,
端口一样的改,其中遇到一个很奇怪的问题,我改完之后,加了一条注释,结果重启JOBSS,死活都不行,异常一大堆,最后把注释去掉,就好了,这个不知道是什么原因,server.xml中本身就有很多注释,再加我一条,就不行了?
还有我们在写客户端的时候有这样一句
pro.setProperty(Context.PROVIDER_URL, "localhost:1099");
如果客户端和服务端不在同JVM下,你通过修改上面的配置,再把localhost改为服务器IP是无效的,至少我试验的结果是这样,需要启动的时候加上这个:
引用
run -b 0.0.0.0
客户端才能连上服务器。
1、服务端代码如下:
package com.foshanshop.ejb3;
public interface HelloWorld {
public String SayHello(String name);
}
另外一个无状态会话BEAN
package com.foshanshop.ejb3.impl;
import com.foshanshop.ejb3.HelloWorld;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
@Remote ({HelloWorld.class})
public class HelloWorldBean implements HelloWorld {
public String SayHello(String name) {
return name +"说:你好!世界,这是我的第一个EJB3哦.";
}
}
这个BEAN需要引入javaee.jar,JBOSS中没有,所以需要另外下载
2、客户端,我新建了一个普通工程EJBTest
package com.foshanshop.ejb3.aa;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class HelloWorldTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Properties pro = new Properties();
pro.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
pro.setProperty(Context.PROVIDER_URL, "localhost:1099");
pro.setProperty(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
InitialContext ctx;
try {
ctx = new InitialContext(pro);
System.out.println(ctx);
// HelloWorld helloworld = (HelloWorld) javax.rmi.PortableRemoteObject.narrow(objRef, HelloWorld.class);
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
String result = helloworld.SayHello("佛山人");
System.out.println(result);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端需要引入包jbossall-client.jar,这个包在jboss-4.2.2.GA\client目录下有。并且服务端的HelloWorld接口拷贝到这个包下,执行,报异常:
javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: com.foshanshop.ejb3.HelloWorld (no security manager: RMI class loader disabled)]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:786)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.foshanshop.ejb3.aa.HelloWorldTest.main(HelloWorldTest.java:25)
刚开始以为是缺少包,后来又引入几个相关的包,一样报错,异常上说找不到com.foshanshop.ejb3.HelloWorld 这个类,前面包名是服务端的包名,我在客户端的包名是com.foshanshop.ejb3.aa,这里有点想不明白,唯一可以解释的是EJB在发布的时候,接口是带包名一起发布的, 如果真是这样,有点不合情理,希望在以后的学习中能够解决这个疑惑吧,我把客户端包名改成与服务端一致,执行,一切正常,第一个EJB完成。
分享到:
相关推荐
这个ejb3.0开发实例提供了完整的代码,对于初学者来说,是学习和理解EJB 3.0概念和实践操作的宝贵资源。你可以通过阅读和运行这些代码,逐步掌握EJB 3.0的核心特性,并将其应用于实际项目中。同时,也可以加深对Java...
《精通EJB3.0》是一本深入探讨企业级JavaBeans(EJB)3.0技术的专业书籍,由Rima Patel、Sriganesh、Gerald Brose和Micah Silverman共同编写,由Wiley Publishing出版。该书为读者提供了全面且深入的EJB3.0知识体系...
首先,我们来看《EJB3.0开发Entity.pdf》。在EJB 3.0中,Entity Bean代表持久化对象,它存储在数据库中并与数据库进行交互。这个部分将介绍如何定义实体bean,包括使用JPA(Java Persistence API)来注解实体类,...
这本书深入浅出地讲解了EJB3.0的核心概念和技术细节,是学习EJB3.0不可或缺的重要参考资料之一。 **主要内容包括:** - EJB3.0的基础概念和发展历程。 - EJB3.0的新特性介绍,如注解、POJO支持等。 - 如何利用EJB...
总的来说,"ejb3.0入门经典教程-source"是一个宝贵的资源,它将理论知识与实际操作相结合,是深入理解并熟练运用EJB 3.0的关键步骤。通过阅读和运行这些源码,开发者可以加深对EJB 3.0的理解,提升在企业级Java开发...
"李腾飞EJB3.0 源码 源代码"可能包含的是李腾飞教授或团队关于EJB 3.0技术的实践示例或教学资源。通过分析这些源码,开发者可以深入理解EJB 3.0的实现细节,例如如何使用注解定义Bean、如何处理持久化、如何进行依赖...
EJB 3.0是EJB规范的一个重大革新,它极大地简化了EJB的开发过程,引入了许多面向开发者友好的特性,如注解、依赖注入以及更轻量级的架构。 **1. 注解驱动的开发** 在EJB 3.0之前,开发者需要编写大量的XML配置文件...
EJB 3.0 API是EJB技术的一个重要版本,它在前几版的基础上进行了重大改进,极大地简化了开发过程,降低了学习曲线,提升了开发效率。 EJB 3.0 API引入了若干关键特性,如: 1. **注解驱动(Annotation-Based)**:...
在"**EJB3.0+JBOSS+MyEclipse初体验(完整代码和过程).txt**"文件中,你将找到一个完整的示例,涵盖了上述所有步骤,包括具体的代码片段和执行过程,这对于初学者来说是一个很好的起点,可以快速理解并实践EJB 3.0在...
### EJB2.0与EJB3.0的主要区别 #### 一、简介 企业Java Beans(EJB)是Java平台为企业级应用提供的一种组件模型。随着技术的发展,EJB经历了多个版本的迭代,其中EJB 2.0和EJB 3.0是两个重要的里程碑版本。本文将...
1. **实体Bean(EJB Entity)**:在EJB 3.0中,实体Bean的实现变得更加简单,引入了Java Persistence API (JPA)。开发者可以通过注解(如`@Entity`)直接在Java类上声明实体,并使用`@Id`指定主键。此外,还支持实体...
总的来说,"EJB3.0源代码"的压缩包很可能包含了使用EJB 3.0规范编写的各类Bean的源码,包括实体Bean、无状态会话Bean、有状态会话Bean和消息驱动Bean,以及相关的配置文件。通过分析这些源代码,我们可以深入理解EJB...
1. **注解驱动(Annotation-based)**:EJB3.0弃用了XML配置文件,转而采用注解来声明实体Bean、会话Bean和消息驱动Bean的元数据。这使得代码更加简洁,减少了配置文件的维护工作,例如`@Entity`、`@Stateless`、`@...
### 精通EJB3.0经典书目解析 #### 一、书籍基本信息 - **书名**:《精通企业级Java Beans (EJB) 3.0》 - **作者**:Rima Patel Sriganesh, Gerald Brose, Micah Silverman - **出版社**:Wiley Publishing, Inc. -...
**电子书-EJB3.0实例教程** EJB(Enterprise JavaBeans)是Java平台企业版(Java EE)的一部分,主要用于构建可复用的、模块化的、面向服务的企业级应用程序。EJB 3.0是其重要的一个版本,它在EJB 2.x的基础上进行...
- **书籍推荐**:《EJB3.0入门经典》,该书详细介绍了EJB 3.0的核心概念和技术要点,适合初学者入门。 - **电子资源**:《EJB3.0实例教程》免费电子版,提供了大量的实战案例和示例代码,有助于加深理解。 #### 九...
**EJB3.0实例教程及源代码** 本教程专注于企业级JavaBeans(EJB)3.0技术的实践应用,由黎活明提供。EJB是Java平台上的一个核心组件,用于构建可扩展的、可靠的、安全的分布式应用程序。EJB 3.0是EJB规范的一个重要...
1. **注解驱动(Annotation-based)**:在EJB3.0中,开发者可以使用注解来声明组件的角色、依赖关系以及持久化等信息,大大减少了XML配置文件的使用。例如,@Entity表示一个实体Bean,@PersistenceContext用于注入...
同时,`www.pudn.com.txt`可能是下载资源的来源或者包含更多相关资料链接,对深入学习EJB 3.0定时服务也有所帮助。 总的来说,EJB 3.0的定时服务是Java EE平台中一个强大而灵活的工具,它极大地提高了企业级应用的...
**EJB3.0 学习笔记** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重大更新,引入了许多改进,使得开发过程更为简化,降低了...