求助:ejb 出错

梦雨农 2004-07-01 05:06:53
Exception in thread "main" javax.naming.NameNotFoundException: HelloHome not bou
nd
at org.jnp.server.NamingServer.getBinding(NamingServer.java:495)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:503)
at org.jnp.server.NamingServer.getObject(NamingServer.java:509)
at org.jnp.server.NamingServer.lookup(NamingServer.java:282)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)

怎么解决?
...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
梦雨农 2004-07-01
  • 打赏
  • 举报
回复
在不断总结下,问题得以解决,原来是粗心将jboss.xml写错了,所以lookup不能找到home接口,现在得以运行了,谢谢各位的解答.
梦雨农 2004-07-01
  • 打赏
  • 举报
回复
这是测试ejb的时候报的错误,部署是正确的,我也认为是lookup("..."),有点问题,就是不知道怎么解决.
部署信息:
18:33:17,546 INFO [MainDeployer] Starting deployment of package: file:/E:/jboss
-3.2.3/server/default/deploy/HelloWorld.jar
18:33:17,921 INFO [EjbModule] Deploying Hello
18:33:17,984 INFO [StatelessSessionInstancePool] Started jboss.j2ee:jndiName=He
llo,plugin=pool,service=EJB
18:33:17,984 INFO [StatelessSessionContainer] Started jboss.j2ee:jndiName=Hello
,service=EJB
18:33:17,984 INFO [EjbModule] Started jboss.j2ee:module=HelloWorld.jar,service=
EjbModule
18:33:17,984 INFO [EJBDeployer] Deployed: file:/E:/jboss-3.2.3/server/default/d
eploy/HelloWorld.jar
18:33:18,000 INFO [MainDeployer] Deployed package: file:/E:/jboss-3.2.3/server/
default/deploy/HelloWorld.jar

helloclient代码:
package examples;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;
public class HelloClient {
public static void main(String[] args) throws Exception {

Properties props = System.getProperties();
System.out.println("aaa");
Context ctx = new InitialContext(props);
Object obj = ctx.lookup("HelloHome");
HelloHome home = (HelloHome)
javax.rmi.PortableRemoteObject.narrow(
obj, HelloHome.class);
Hello hello = home.create();
System.out.println(hello.hello());
hello.remove();
}
}
jboss.xml 代码
<?xml version="1.0"?>

<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN" "http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd">

<jboss>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<jndi-name>HelloHome</jndi-name>
<local-jndi-name>HelloLocalHome</local-jndi-name>
</session>
</enterprise-beans>

</jboss>
ejb-jar.xml代码
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<home>examples.HelloHome</home>
<remote>examples.Hello</remote>
<local-home>examples.HelloLocalHome</local-home>
<local>examples.HelloLocal</local>
<ejb-class>examples.HelloBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>

运行测试命令:
E:\jboss-3.2.3\HelloWorld\classes>java -Djava.security.policy=E:/jboss-3.2.3/Hel
loWorld/java.policy -Djava.naming.factory.initial=org.jnp.interfaces.NamingConte
xtFactory -Djava.naming.provider.url=localhost:1099 examples.HelloClient
aaa
Exception in thread "main" javax.naming.NameNotFoundException: HelloHome not bou
nd
at org.jnp.server.NamingServer.getBinding(NamingServer.java:495)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:503)
at org.jnp.server.NamingServer.getObject(NamingServer.java:509)
at org.jnp.server.NamingServer.lookup(NamingServer.java:282)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:528)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:507)
>>>> at javax.naming.InitialContext.lookup(Unknown Source)
>>>> at examples.HelloClient.main(HelloClient.java:36)

如果是lookup错误该怎么解决呢?
谢谢各位,有奖.
hq1305018 2004-07-01
  • 打赏
  • 举报
回复
第一,JNDI名称不符,注意大小写。
第二,EJB部属的服务器没启动或EJB部属有问题,一般启动服务器后到控制台可以调整。
第三,Context获取不正确,就是那个查找JNDI名字的东东。
最好你把代码贴上来。
tanguangbin 2004-07-01
  • 打赏
  • 举报
回复
provider 2004-07-01
  • 打赏
  • 举报
回复
这是运行时的错误?还是发布时的?

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧