本人初学EJB,在MyEclipse建了两个项目,一个作为服务端,一个作为客户端,
服务端代码:
@Stateless
@Remote
public class FirstEjbBean implements FirstEjb {
public String saySomething(String name){
return "你好:" + name;
}
}
客户端代码
public class FirstEjbClient {
public static void main(String[] args) throws Exception {
InitialContext context = new InitialContext();
FirstEjb firstEjb = (FirstEjb)context.lookup("FirstEjbBean/remote");
String s = firstEjb.saySomething("张三");
System.out.println(s);
}
}
jndi.properties内容:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost
服务端错误:
21:21:39,843 ERROR [ServerThread] Worker thread initialization failure
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2500)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1273)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:133)
at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:95)
at org.jboss.remoting.transport.socket.ServerThread.versionedRead(ServerThread.java:641)
at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:523)
at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:363)
at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:159)
客户端错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/aop/joinpoint/IMethodInfo
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
at java.lang.Class.getConstructor0(Class.java:2671)
at java.lang.Class.getDeclaredConstructor(Class.java:1953)
at java.io.ObjectStreamClass.getExternalizableConstructor(ObjectStreamClass.java:1269)
at java.io.ObjectStreamClass.access$1400(ObjectStreamClass.java:52)
at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:418)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:400)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:297)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1035)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.sendObject(JavaSerializationManager.java:86)
at org.jboss.remoting.marshal.serializable.SerializableMarshaller.write(SerializableMarshaller.java:104)
at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedWrite(MicroSocketClientInvoker.java:958)
at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:552)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
at org.jboss.remoting.Client.invoke(Client.java:1544)
at org.jboss.remoting.Client.invoke(Client.java:530)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:103)
at $Proxy0.saySomething(Unknown Source)
at com.bjsxt.ejb.FirstEjbClient.main(FirstEjbClient.java:13)
请各位帮忙查找原因,十分感谢!!!
问题补充:加上了端口还是不行,jboss是5版本的
相关推荐
本教程主要介绍如何在Java客户端访问通过Glassfish发布的EJB,特别是EJB3.0的安全特性。 首先,我们要创建一个包含简单会话bean(session bean)的企业应用程序,并建立一个Java类库项目,该项目包含了会话bean的...
EJB2.0引入了本地接口的概念,允许开发者使用本地接口访问EJB组件,提高性能。在这一部分,我们将学习如何使用本地接口实现CMP实体Bean。 **开发EJB2.0的CMP (EJBQL)** EJBQL (Enterprise JavaBeans Query ...
在IT行业中,C++通过CORBA访问EJB(Enterprise JavaBeans)是一种常见的跨语言、跨平台的集成技术,主要用于分布式系统中的组件交互。本资源详细介绍了如何利用C++作为客户端,通过CORBA(Common Object Request ...
综上所述,"第一个EJB访问数据库例子"这个项目将引导我们了解如何在EJB环境中设置和使用数据库连接,以及如何通过EJB组件执行SQL查询和操作。这个过程中,我们将涉及JDBC、JNDI、EJB组件类型、事务管理以及可能的JPA...
EJB必须部署在支持的容器(如WebSphere、WebLogic)中,用户通过容器间接访问EJB组件,而非直接访问。 #### SessionBean与EntityBean的区分 - **SessionBean**:主要用于处理业务逻辑,分为Stateful和Stateless两...
本主题将探讨“Local”和“Remote”两种方式访问EJB的知识点。 首先,我们要理解EJB的两种主要访问方式: 1. **Local访问**:这种方式适用于同一个应用内部的组件之间通信。Local接口不包含远程方法调用的开销,...
glassfish部署EJB公网访问设置
EJB支持角色基础的访问控制(RBAC),允许对EJB方法的调用进行权限验证,以确保只有授权的用户或角色才能访问特定的业务操作。 **简单易懂**: "简单易懂"表明这个EJB示例可能采用了清晰的代码结构,简单的业务逻辑...
在安全方面,EJB提供了角色基的访问控制(Role-Based Access Control,RBAC),允许开发者定义不同用户角色对bean方法的访问权限。事务管理是另一个关键特性,EJB支持声明式事务(Declarative Transactions),只需...
客户端通过查询JNDI来获取到客户端代理对象,然后通过RMI调用这些对象来访问远程EJB。 #### 四、总结 通过上述分析,我们可以看到EJB的工作原理涉及到了多个层次的概念和技术,包括EJB容器、客户端和服务端代理...
自己经过实践总结出来的jboss和jboss7访问EJB的方法,经过试验证明方法无误,这么好的资源还不赶快下载!
有关JSF、EJB、JPA访问数据库的方法。
- WebLogic Server提供基于角色的访问控制(RBAC),EJB可以定义安全角色,并在部署描述符中指定哪些用户或组可以访问特定的EJB方法。 9. **WebLogic Server集群和EJB** - 在集群环境中,EJB可以实现负载均衡和...
在配置和使用WebLogic EJB时,可能会遇到如部署失败、性能瓶颈、安全性问题等。这些问题通常可以通过查看日志、调整服务器配置、优化bean代码等方式解决。理解WebLogic的诊断工具和管理控制台是解决问题的关键。 ...
1. **服务器(Server)**:EJB服务器负责管理和协调EJB容器,同时提供对操作系统服务及Java相关服务的访问,如通过JNDI(Java Naming and Directory Interface)访问命名空间和基于OTSI(Object Transaction Service ...
EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的...通过深入研究提供的代码样例,你可以更好地掌握EJB在实际项目中的运用,以及如何利用EJB的优势来解决企业级问题。
### CORBA客户端访问EJB详解 #### 一、引言 随着企业级应用的发展,不同技术栈间的系统集成成为了一项重要任务。CORBA(Common Object Request Broker Architecture,通用对象请求代理体系)作为一种广泛使用的...
`EJBContext`是由容器提供的,允许EJB实例访问EJB容器。常用的方法包括`lookup(String name)`用于查找相关资源以及`setRollbackOnly()`用于控制事务回滚。 示例代码如下: ```java @Resource private Session...
- **安全性**:内置的安全框架保护了应用资源,防止未经授权的访问。 - **负载均衡**:通过容器(如JBoss)实现,能有效地分配服务请求,提高系统性能。 开发EJB3.0的环境准备: - **JBoss应用服务器**:EJB3.0...
而Hibernate则是一个对象关系映射(ORM)框架,它允许开发者将Java类与数据库中的表进行映射,简化了数据访问层的开发。 EJB3是EJB规范的一个版本,它在EJB2的基础上进行了大量的简化和改进,使得EJB更易于使用。...