急寻在基于jb6+javabean+EJB2.0+weblogic6.1的web应用开发过程中jndi错误的问题和部署问题????
问题描述: 在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和其他客户断调用?