EJB报错如下:
javax.naming.NameNotFoundException: remote not bound at org.jnp.server.NamingServer.getBinding(NamingServer.java:529) at org.jnp.server.NamingServer.getBinding(NamingServer.java:537) at org.jnp.server.NamingServer.getObject(NamingServer.java:543) at org.jnp.server.NamingServer.lookup(NamingServer.java:296) at org.jnp.server.NamingServer.lookup(NamingServer.java:270) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142) at org.jnp.server.NamingServer_Stub.lookup(Unknown Source) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:667) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627) at javax.naming.InitialContext.lookup(InitialContext.java:392) at junit.test.PersionServiceTest.setUpBeforeClass(PersionServiceTest.java:22) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74) at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33) at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
当然就算是初学者也知道,绑定不上远程!可到底是哪里绑定不上呢?可以一步步的测试!
先看三个文件:
远程接口文件:
package service.impl; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import service.PersionService; import bean.Persion; @Stateless @Remote(PersionService.class) public class PersoinServiceBean implements PersionService { @PersistenceContext(unitName = "golden") EntityManager en; public void delete(Integer persionid) { en.remove(en.getReference(Persion.class, persionid)); } public Persion getPersion(Integer persionid) { return en.find(Persion.class, persionid); } @SuppressWarnings("unchecked") public List<Persion> getPersions() { return en.createQuery("select * from Persion p").getResultList(); } public void save(Persion persion) { en.persist(persion); } public void update(Persion persion) { en.merge(persion); } }
连接池配置文件:persistence.xml(在项目SRC下的META-INF下)
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="golden" transaction-type="JTA"> <jta-data-source>java:goldenDS</jta-data-source> </persistence-unit> </persistence>
Jboss连接数据库配置文件,这里是用的是Mysql
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>goldenDS</jndi-name> <connection-url> jdbc:mysql://localhost:3306/golden?useUnicode=true&characterEncoding=utf-8 </connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>root</password> <exception-sorter-class-name> org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter </exception-sorter-class-name> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
1.先看服务器是否连接上了数据库,启动服务器 连接到主页从 JMX Console 可以看到相应链接池的情况
2.看远程接口是否正确,去除管理对象
@PersistenceContext(unitName = "golden") EntityManager en;
这时通过测试看是否能得到远程的对象
如果远程无法绑定或相应的远程接口无法绑定,则一个可能是由于接口本身创建时错误,还有可能是接口实现类内部调用的对象出错!
本次错误就是因为调用的管理对象无法创建造成的!
首选是服务器配置文件的错误,连接字符串不正确,再者,persistence.xml一定要在META-INF下切这个文件名称全是小写!
相关推荐
【ejb-remote.zip_remote】是一个与企业级JavaBean(EJB)远程接口相关的压缩包,主要用于在MyEclipse集成开发环境中实现EJB服务端工程的构建和部署。EJB是一种Java技术,它允许开发者创建可部署在Java应用服务器上...
本主题将探讨“Local”和“Remote”两种方式访问EJB的知识点。 首先,我们要理解EJB的两种主要访问方式: 1. **Local访问**:这种方式适用于同一个应用内部的组件之间通信。Local接口不包含远程方法调用的开销,...
Tomcat下web工程调用JBOSS部署的EJB项目 此源码包 包括local本地调用及remote远程调用 文档说明在http://blog.csdn.net/heardy/article/details/6906225
javax.ejb.Remote.class javax.ejb.RemoteHome.class javax.ejb.Remove.class javax.ejb.RemoveException.class javax.ejb.Schedule.class javax.ejb.ScheduleExpression.class javax.ejb.Schedules.class javax.ejb...
- EJB的remote接口类必须继承自`weblogic.wtc.jatmi.TuxedoService`,这样EJB才能理解Tuxedo的服务调用协议。 - EJB的remote home接口类应继承自`weblogic.wtc.jatmi.TuxedoServiceHome`,这是创建和查找EJB实例的...
javax.ejb.Remote.class javax.ejb.RemoteHome.class javax.ejb.Remove.class javax.ejb.RemoveException.class javax.ejb.Schedule.class javax.ejb.ScheduleExpression.class javax.ejb.Schedules.class javax.ejb...
【在JBoss下配置EJB】 企业级JavaBean(Enterprise ...总之,在JBoss下配置EJB涉及多方面的知识,包括EJB规范、服务器配置、部署流程以及错误排查等。熟练掌握这些技能,能帮助开发者更好地构建和维护企业级Java应用。
WebSphere环境下EJB编程主要涉及Java企业版(Java EE)中的核心组件——Enterprise JavaBeans(EJB),以及如何在IBM的WebSphere应用服务器上进行EJB的开发、部署和管理。EJB是一种服务器端组件模型,它为创建可移植...
<REMOTE>元素用于描述EJB组件的远程接口信息,该元素包含了多个子元素,如<EJB-CLASS>等。 <EJB-CLASS>元素用于描述EJB组件的实现类信息,例如EJB组件的类路径和类名称。 元素用于描述EJB组件的会话类型信息,例如...
本篇文章将深入探讨在WebLogic Server环境下配置EJB的相关知识。 一、EJB概述 EJB是一种组件模型,用于在Java EE环境中实现业务逻辑。它有三种主要类型:会话bean(Session Beans)、实体bean(Entity Beans)和...
### EJB技术详解 #### EJB 2.0与EJB 1.1的主要区别及其应用场景 EJB(Enterprise JavaBeans)技术自1998年首次推出以来,...同时,对比JavaBean,EJB在分布式环境下的优势明显,是构建大型、复杂系统的优选技术方案。
beanName用于指定被调用EJB的类名或ejb-name配置项,而mappedName则用于指定JNDI名称,通常在特定服务器环境下才需要手动设置。 另外,EJB3.0还引入了实体Bean的注解,如@Entity,使得持久化管理更为便捷。ORM框架...
import javax.ejb.Remote; @Remote public interface MyRemoteService { String doSomething(String input); } ``` 然后,实现这个接口的EJB组件,添加必要的注解以声明其为远程服务: ```java import javax.ejb...
6. **源代码解析**:压缩包中的`EJBDemo`文件可能是项目根目录,包含`src/main/java`下的bean类、`src/main/resources`下的配置文件、`pom.xml`或`build.gradle`构建文件等。 通过这个Demo项目,开发者可以学习到...
在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是用于构建企业级应用的框架,它包含了一系列的技术和规范,如EJB(Enterprise JavaBeans)、JDBC(Java Database Connectivity)、JSP(JavaServer Pages...
- **开发流程**:EJB应用的开发通常遵循以下步骤:定义Bean类、实现Home和Remote接口、配置部署描述符、编写客户端代码、测试和部署。 - **部署与管理**:EJB容器负责管理Bean的生命周期,包括创建、销毁和状态...
javax.ejb.Remote.class javax.ejb.RemoteHome.class javax.ejb.Remove.class javax.ejb.RemoveException.class javax.ejb.Schedule.class javax.ejb.ScheduleExpression.class javax.ejb.Schedules.class javax.ejb...
然后可以将生成的文件target/ejb-remote-server.jar部署到正在运行的Wildfly服务器(例如,通过管理控制台)。 maven中的install命令还将在本地maven存储库中安装该软件包,因此EJB客户端可以找到EJB的远