急寻在基于jb6+javabean+EJB2.0+weblogic6.1的web应用开发过程中jndi错误的问题和部署问题????

lly9900 2002-07-02 09:03:26
问题描述: 在weblogic6.1上,javabean调用EntityBean时lookup()方法出错,找不到jndi名: javax.naming.NameNotFoundException!!!???

1. 启动weblogic6.x default server,进入default console, 配置web application name:weblogin,path:c:\weblogin,target:myserver.
2. 配置oracle connection pool、datasource正常。
3. http://localhost:7001/weblogin/register.html运行正常(register.html在c:\weblogin目录下)。

4.java bean 和EntityBean
/***** khjlxxRemoteHome *************/

package weblogin.ejb;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface khjlxxRemoteHome extends javax.ejb.EJBHome {
public khjlxxRemote create(java.lang.String khjlbh,java.lang.String khjlmc) throws CreateException, RemoteException;
public khjlxxRemote findByPrimaryKey(java.lang.String khjlbh) throws FinderException, RemoteException;
}


/*********** khjlxxRemote *****************/
package weblogin.ejb;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface khjlxxRemote extends javax.ejb.EJBObject {
public java.lang.String getKhjlbh() throws RemoteException;
public java.lang.String getKhjlmc() throws RemoteException;
public void setKhjlmc(java.lang.String khjlmc) throws RemoteException;
public void setKhjlbh(java.lang.String khjlbh) throws RemoteException;
}


/*********** khjlxxBean ******************/
package weblogin.ejb;

import javax.ejb.*;

public abstract class khjlxxBean implements EntityBean {

EntityContext entityContext;

public java.lang.String ejbCreate(java.lang.String khjlbh,java.lang.String khjlmc) throws CreateException {
setKhjlbh(khjlbh);
setKhjlbh(khjlbh);
return null;
}

public void ejbPostCreate(java.lang.String khjlbh,java.lang.String khjlmc) throws CreateException {
}

public void ejbRemove() throws RemoveException {
}

public void ejbLoad() {
}

public void ejbStore() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}

public void unsetEntityContext() {
this.entityContext = null;
}
public void setEntityContext(EntityContext entityContext) {
this.entityContext = entityContext;
}

public abstract void setKhjlbh(java.lang.String khjlbh);
public abstract void setKhjlmc(java.lang.String khjlmc);
public abstract java.lang.String getKhjlmc();
public abstract java.lang.String getKhjlbh();

}


/************** khjlxxData *****************/
package weblogin.javabean;

import weblogin.ejb.*;
import javax.naming.*;
import javax.ejb.*;
import javax.rmi.*;
import java.sql.*;
import java.util.Properties;

public class khjlxxData {
private String khjlbh = null;
private String khjlmc = null;

khjlxxRemoteHome khjlxxremotehome = null;

public khjlxxData( ) throws SQLException {
try {
/*
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://localhost:7001");
*/

Context ctx = new InitialContext();
//Object obj = ctx.lookup("khjlxxBean");

Object obj = ctx.lookup("khjlxxRemote");

khjlxxremotehome = (khjlxxRemoteHome)PortableRemoteObject.narrow(obj,khjlxxRemoteHome.class);
}
catch ( Exception ex ) {
throw new SQLException(ex.toString());
}
}

}

5. c:\weblogin\WEB-INF\classes\weblogin\ejb\*.class
6. c:\weblogin\WEB-INF\classes\weblogin\javabean\*.class
7. c:\weblogin\WEB-INF下的部署文件如下:
ejb-jar.xml
web.xml
weblogic.xml
weblogic-cmp-rdbms-jar.xml
weblogic-ejb-jar.xml
8. 在weblogic-ejb-jar.xml文件中有定义如下:
<jndi-name>khjlxxRemote</jndi-name>
9. 在khjlxxData 中 Object obj = ctx.lookup("khjlxxRemote")出错!!
javax.naming.NameNotFoundException ,unable to resolve khjlxxRemote

10.怎样才能在开发过程中将jndi名khjlxxRemote部署到weblogic6.1服务器上,以便 javabean和其他客户断调用?



...全文
90 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuohua 2002-07-03
  • 打赏
  • 举报
回复
哦,虽然不能帮你,但是帮你UP一下!希望你能得到好的解答!
UP! :)
lly9900 2002-07-03
  • 打赏
  • 举报
回复
谢谢各位的支持!!
首先,我的weblogic6.1 default server运行正常,新建的web applicatiuon名称为weblogin,path = c:\weblogin,
http://localhost:7001/weblogin/register.html 运行正常

c:\weblogin
|-register.html
|-register.jsp //use:javabean,javabean调用ejb
|-WEB-INF
| |-classes
| |-weblogin
| |-javabean - *.class
| |_ejb - *.class
|
|-web.xml
|_weblogin.xml
|-ejb-jar.xml
|-weblogic-cmp-rdbms-jar.xml
|_weblogic-ejb-jar.xml //包含jndi名称
|_weblogin_ejb_jar.jar //在jb6中生成,copy过来


我这样的目录结构,应该算调用成功吧???!!!!,虽然我没有在weblogic console中部署EJB, 但我按这样的目录结构将文件存放到我的web application指定的path之下,算是部署了吧???!!! 因为在开发阶段,难道要每做一个EJB,都要部署工具部署到weblogic server中才能被client调用吗??这样做开发难道不烦琐吗??
后来实在没办法,在weblogic console中部署weblogin_ejb_jar.jar,不过它自动将其copy到mydomain的application目录之下!!我没法手动指定它的部署路径,虽然如此,在myserver 的jndi tree下终于可以看到那个bean的jndi名字了,程序终于运行成功了!!
虽然如此,还是有很多困惑和难解的地方,请各位继续发表看法!!


linfei 2002-07-03
  • 打赏
  • 举报
回复
在客户端添加一个方法:
private Context getInitialContext() throws Exception {
String url = "t3://localhost:7001";
String user = null;
String password = null;
Properties properties = null;
try {
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);
if (user != null) {
properties.put(Context.SECURITY_PRINCIPAL, user);
properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);
}

return new InitialContext(properties);
}
catch(Exception e) {
System.out.println("Unable to connect to WebLogic server at " + url);
System.out.println("Please make sure that the server is running.");
throw e;
}
}

然后把Context ctx = new InitialContext();改成
Context ctx = getInitialContext();
olvest4000 2002-07-03
  • 打赏
  • 举报
回复
说不定是weblogic没配置成功·!!
woowindice 2002-07-02
  • 打赏
  • 举报
回复
ejb确定部署成功了吗?
jndi是weblogic的服务
你不用关心
我猜是你ejb没有部署成功的原因

1,236

社区成员

发帖
与我相关
我的任务
社区描述
企业软件 中间件技术
社区管理员
  • 中间件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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