各位高人:小弟初学j2ee,希望得到你们的指导,谢谢!
我 用WebLogic服务器器发布了一个ejb,要从另外一个java工程访问之。我打出了jndi的名称空间似乎也存在这个ejb。代码及结果如下:
代码:
package org.eclipseguide.hello;
import javax.naming.InitialContext;
import mor.smis.ejb.Inf_ControllerLocal;
import mor.smis.ejb.fetchDataLocal;
import mor.smis.ejb.fetchDataRemote;
import java.util.Hashtable;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.*;
public class HelloWorld {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String url = "t3://localhost:7001";
Context ctx =null;
Properties prop = null;
try {
// Hashtable ht = new Hashtable();
// ht.put(Context.INITIAL_CONTEXT_FACTORY,
// "weblogic.jndi.WLInitialContextFactory");
// ht.put(Context.PROVIDER_URL,
// "t3://localhost:7001");
// Context context = new InitialContext(ht);
prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
prop.put(Context.PROVIDER_URL, url);
Context context = new InitialContext(prop);
ctx = new InitialContext(prop);
listContext(ctx,"");
System.out.println( ctx.lookup("java:comp/env/ejb/FectchData"));
}catch(NamingException ex)
{
System.out.println("4444 "+ex.toString());
System.exit(1);
};
}
private static void listContext(Context ctx,String indent)
{
try{
NamingEnumeration list =ctx.listBindings("");
while(list.hasMore())
{
Binding item =(Binding)list.next();
String cName= item.getClassName();
String name= item.getName();
System.out.println(indent
+cName+" "+name);
Object o=item.getObject();
if(o instanceof javax.naming.Context)
listContext((Context )o, indent+" ");
}
}catch(NamingException ex)
{
System.out.println("dddddd"+ex);
}
}}运行结果:
weblogic.corba.j2ee.naming.ContextImpl Gd_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy0 Gd_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl weblogic
ddddddjavax.naming.NamingException: Exception in listBindings [Root exception is org.omg.CORBA.NO_PERMISSION: vmcid: 0x0 minor code: 0 completed: No]
weblogic.corba.j2ee.naming.ContextImpl YsQb_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy1 YsQb_ControllerRemote
mor.smis.ejb._YsQb_Controller_lu5f5s_YsQb_ControllerRemoteIntf_Stub smisEARsmisEJB_jarYsQb_Controller_YsQb_ControllerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarDd_Controller_Home
mor.smis.ejb._Gjh_Controller_p4dok4_Gjh_ControllerRemoteIntf_Stub smisEARsmisEJB_jarGjh_Controller_Gjh_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl Gjh_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy2 Gjh_ControllerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarQb_Controler_Home
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarYsQb_Controller_Home
mor.smis.ejb._Gd_Controller_avf4g0_Gd_ControllerRemoteIntf_Stub smisEARsmisEJB_jarGd_Controller_Gd_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl Hyjh_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy3 Hyjh_ControllerRemote
mor.smis.ejb._Inf_Controller_bczzpo_Inf_ControllerRemoteIntf_Stub smisEARsmisEJB_jarInf_Controller_Inf_ControllerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarHyjh_Controller_Home
mor.smis.ejb._fetchData_8vu3cw_fetchDataRemoteIntf_Stub smisEARsmisEJB_jarfetchData_fetchDataRemote
weblogic.corba.j2ee.naming.ContextImpl ejb
weblogic.corba.j2ee.naming.ContextImpl mgmt
org.omg.stub.javax.management.j2ee._ManagementHome_Stub MEJB
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarZyr_Controller_Home
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarGjh_Controller_Home
weblogic.corba.j2ee.naming.ContextImpl javax
ddddddjavax.naming.NamingException: Exception in listBindings [Root exception is org.omg.CORBA.NO_PERMISSION: vmcid: 0x0 minor code: 0 completed: No]
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarfetchData_Home
weblogic.corba.j2ee.naming.ContextImpl Dd_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy4 Dd_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl Zyr_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy5 Zyr_ControllerRemote
mor.smis.ejb._Hyjh_Controller_7rl7r4_Hyjh_ControllerRemoteIntf_Stub smisEARsmisEJB_jarHyjh_Controller_Hyjh_ControllerRemote
mor.smis.ejb._Zyr_Controller_r2ei8_Zyr_ControllerRemoteIntf_Stub smisEARsmisEJB_jarZyr_Controller_Zyr_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl Qb_Controler#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy6 Qb_ControlerRemote
mor.smis.ejb._Dd_Controller_25882o_Dd_ControllerRemoteIntf_Stub smisEARsmisEJB_jarDd_Controller_Dd_ControllerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarInf_Controller_Home
org.omg.stub.javax.management.j2ee._Management_Stub mejbmejb_jarMejb_EO
mor.smis.ejb._Qb_Controler_oqm3m0_Qb_ControlerRemoteIntf_Stub smisEARsmisEJB_jarQb_Controler_Qb_ControlerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarGd_Controller_Home
weblogic.corba.j2ee.naming.ContextImpl FectchData#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy7 fetchDataRemote
weblogic.corba.j2ee.naming.ContextImpl Inf_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy8 Inf_ControllerRemote//ctx.lookup("java:comp/env/ejb/FectchData") 在这里报错。。
4444 javax.naming.NameNotFoundException: remaining name: env/ejb/FectchData//end
//如果用jspd调则没问题。。各位高人。我该如何解决,如何去找到绑定对象呀?
我 用WebLogic服务器器发布了一个ejb,要从另外一个java工程访问之。我打出了jndi的名称空间似乎也存在这个ejb。代码及结果如下:
代码:
package org.eclipseguide.hello;
import javax.naming.InitialContext;
import mor.smis.ejb.Inf_ControllerLocal;
import mor.smis.ejb.fetchDataLocal;
import mor.smis.ejb.fetchDataRemote;
import java.util.Hashtable;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.*;
public class HelloWorld {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String url = "t3://localhost:7001";
Context ctx =null;
Properties prop = null;
try {
// Hashtable ht = new Hashtable();
// ht.put(Context.INITIAL_CONTEXT_FACTORY,
// "weblogic.jndi.WLInitialContextFactory");
// ht.put(Context.PROVIDER_URL,
// "t3://localhost:7001");
// Context context = new InitialContext(ht);
prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
prop.put(Context.PROVIDER_URL, url);
Context context = new InitialContext(prop);
ctx = new InitialContext(prop);
listContext(ctx,"");
System.out.println( ctx.lookup("java:comp/env/ejb/FectchData"));
}catch(NamingException ex)
{
System.out.println("4444 "+ex.toString());
System.exit(1);
};
}
private static void listContext(Context ctx,String indent)
{
try{
NamingEnumeration list =ctx.listBindings("");
while(list.hasMore())
{
Binding item =(Binding)list.next();
String cName= item.getClassName();
String name= item.getName();
System.out.println(indent
+cName+" "+name);
Object o=item.getObject();
if(o instanceof javax.naming.Context)
listContext((Context )o, indent+" ");
}
}catch(NamingException ex)
{
System.out.println("dddddd"+ex);
}
}}运行结果:
weblogic.corba.j2ee.naming.ContextImpl Gd_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy0 Gd_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl weblogic
ddddddjavax.naming.NamingException: Exception in listBindings [Root exception is org.omg.CORBA.NO_PERMISSION: vmcid: 0x0 minor code: 0 completed: No]
weblogic.corba.j2ee.naming.ContextImpl YsQb_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy1 YsQb_ControllerRemote
mor.smis.ejb._YsQb_Controller_lu5f5s_YsQb_ControllerRemoteIntf_Stub smisEARsmisEJB_jarYsQb_Controller_YsQb_ControllerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarDd_Controller_Home
mor.smis.ejb._Gjh_Controller_p4dok4_Gjh_ControllerRemoteIntf_Stub smisEARsmisEJB_jarGjh_Controller_Gjh_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl Gjh_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy2 Gjh_ControllerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarQb_Controler_Home
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarYsQb_Controller_Home
mor.smis.ejb._Gd_Controller_avf4g0_Gd_ControllerRemoteIntf_Stub smisEARsmisEJB_jarGd_Controller_Gd_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl Hyjh_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy3 Hyjh_ControllerRemote
mor.smis.ejb._Inf_Controller_bczzpo_Inf_ControllerRemoteIntf_Stub smisEARsmisEJB_jarInf_Controller_Inf_ControllerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarHyjh_Controller_Home
mor.smis.ejb._fetchData_8vu3cw_fetchDataRemoteIntf_Stub smisEARsmisEJB_jarfetchData_fetchDataRemote
weblogic.corba.j2ee.naming.ContextImpl ejb
weblogic.corba.j2ee.naming.ContextImpl mgmt
org.omg.stub.javax.management.j2ee._ManagementHome_Stub MEJB
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarZyr_Controller_Home
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarGjh_Controller_Home
weblogic.corba.j2ee.naming.ContextImpl javax
ddddddjavax.naming.NamingException: Exception in listBindings [Root exception is org.omg.CORBA.NO_PERMISSION: vmcid: 0x0 minor code: 0 completed: No]
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarfetchData_Home
weblogic.corba.j2ee.naming.ContextImpl Dd_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy4 Dd_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl Zyr_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy5 Zyr_ControllerRemote
mor.smis.ejb._Hyjh_Controller_7rl7r4_Hyjh_ControllerRemoteIntf_Stub smisEARsmisEJB_jarHyjh_Controller_Hyjh_ControllerRemote
mor.smis.ejb._Zyr_Controller_r2ei8_Zyr_ControllerRemoteIntf_Stub smisEARsmisEJB_jarZyr_Controller_Zyr_ControllerRemote
weblogic.corba.j2ee.naming.ContextImpl Qb_Controler#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy6 Qb_ControlerRemote
mor.smis.ejb._Dd_Controller_25882o_Dd_ControllerRemoteIntf_Stub smisEARsmisEJB_jarDd_Controller_Dd_ControllerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarInf_Controller_Home
org.omg.stub.javax.management.j2ee._Management_Stub mejbmejb_jarMejb_EO
mor.smis.ejb._Qb_Controler_oqm3m0_Qb_ControlerRemoteIntf_Stub smisEARsmisEJB_jarQb_Controler_Qb_ControlerRemote
weblogic.ejb.container.interfaces._Ejb3RemoteHome_Stub smisEARsmisEJB_jarGd_Controller_Home
weblogic.corba.j2ee.naming.ContextImpl FectchData#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy7 fetchDataRemote
weblogic.corba.j2ee.naming.ContextImpl Inf_Controller#mor
weblogic.corba.j2ee.naming.ContextImpl smis
weblogic.corba.j2ee.naming.ContextImpl ejb
$Proxy8 Inf_ControllerRemote//ctx.lookup("java:comp/env/ejb/FectchData") 在这里报错。。
4444 javax.naming.NameNotFoundException: remaining name: env/ejb/FectchData//end
//如果用jspd调则没问题。。各位高人。我该如何解决,如何去找到绑定对象呀?
报错的话那应该要检查weblogic上的初始值是否有FectchData了。
你是直接通过main函数运行的吗?如果是,这肯定不行。
其次,你的服务器运行着吗?