客户端:
TextHome textHome = null;
Text text1 = null;
String url = "iiop://10.12.3.100:3700";
java.util.Properties env = new java.util.Properties();
env.put("java.naming.factory.initial",
"com.sun.jndi.cosnaming.CNCtxFactory");
env.put("java.naming.provider.url", url);
try {
javax.naming.InitialContext ctx = new javax.naming.InitialContext(env);
out.println("Begin to find jndi...<br>");
Object obj = ctx.lookup("Text");
out.println("Find ejb successful!<br>");
textHome = (TextHome) javax.rmi.PortableRemoteObject.narrow(obj,
text.TextHome.class);
text1 = textHome.create();
out.println(text1.getName("11111"));
}
catch (Exception e) {
out.println(e);
}
可是显示的结果是:
Begin to find jndi...
Find ejb successful!
java.lang.ClassCastException
如果把
Object obj = ctx.lookup("Text");改成
Object obj = ctx.lookup("java:comp/env/ejb/Text");
显示结果就是
Begin to find jndi...
javax.naming.NameNotFoundException: No object bound to name java:comp/env/ejb/Text
ejb-jar.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<display-name>TextJar</display-name>
<enterprise-beans>
<session>
<display-name>Text</display-name>
<ejb-name>Text</ejb-name>
<jndi-name>Text</jndi-name>
<home>text.TextHome</home>
<remote>text.Text</remote>
<ejb-class>text.TextBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>Text</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
请问这是怎么回事?
是在SunOne下。
我实在不懂了...求高手指教