当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

EJB下remote not bound 错误

发表于: 2010-07-16   作者:cuisuqiang   来源:转载   浏览次数:
摘要: 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) a

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&amp;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 not bound 错误

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
问题: 在代码实在找不到错误的情况下,仍然报:XXXX not bound 问题产生过程: 通过下图方式创建的
2 EJB
1, Local/Remote/WebService Bean Local就是在自己应用中调用。 同一个JVM。 可以传递引用 Remote用R
1.scala中的<%意识是“view bounds”(视界) ,它比<:的使用范围更广,还能进行隐式转换,是一
一个bound service是一个client-server接口中的server端。一个bound service允许应用组件(比如activ
最近在用Linq做站点,项目环境是VS2008+SQLServer2005. 在本地的数据库用的是VS2005的SQLEXPRESS,一
本人出错是由于本地的IIS不能被局域网其它机器访问导致的,如果你所用的本机IIS 也不可被其它机器访
Global JNDI names( 统一的 全局 JNDI 命名 ) 该特性已经渴望很久了,终于在 EJB 3.1 中得以实现。
一SVN下的文件被locked不能update和commit 最近做项目的时候,遇到这个问题,SVN下的文件被locked不
SVN下错误集锦 一SVN下的文件被locked不能update和commit 最近做项目的时候,遇到这个问题,SVN下的
12月2日mysql爆出windows下5.1/5.5mysql账号可以提权至系统权限 见http://www.exploit-db.com/explo
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号