又有问题了,请大家帮帮忙。

vage 2005-06-17 10:16:08
没想到j2ee的环境这么难设置,我的第一个j2ee程序有又问题了,请大家帮帮忙啊:

//-----客户端程序如下: myClient-----------------//

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;

import myclass.*;

public class myClient
{
public static void main(String[] args)
{
System.out.println("OK");
try
{
Context initContext = new InitialContext();
System.out.println(initContext);
Object obj=initContext.lookup("myRemoteObject"); //远程查找,由名字得到对应的对象。
// RemoteHome home=(RemoteHome)PortableRemoteObject.narrow(obj,RemoteHome.class);
// RemoteInterface remote=home.create();
// String receiveFromRemote=remote.message("Hello,Remote Object!"); //远程方法调用
// System.out.println("Client Received From Remote Object: \""+receiveFromRemote+"\"");
}
catch(Exception e)
{
System.out.println("---------------------------------------");
e.printStackTrace();
}
}
}


运行后提示信息如下:
OK
javax.naming.InitialContext@187aeca
---------------------------------------
javax.naming.NoInitialContextException: Need to specify class name in environmen
t or system property, or as an applet parameter, or in an application resource f
ile: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
40)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.jav
a:280)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at myClient.main(myClient.java:18)


这是怎么回事啊,我也设置过JNDI Name了,怎么还是不行呢。


...全文
98 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
vage 2005-06-21
  • 打赏
  • 举报
回复
问题虽然还没有解决,但感谢大家的回贴。有这么多热心的朋友帮忙,我想一定可以解决问题的。

j2ee这一块我先放了放,我才下了份SUN服务器管理的书,准备研究一下再试试。
昨天把jsp看了看,以前的有ASP的基础,学起了挺轻松的。准备把我才写的一个连ORACLE数据库的小程序发上来,好帮助初学者。
梦想家起飞 2005-06-19
  • 打赏
  • 举报
回复
我也没装sun application server,没法找它的具体上下文工厂,不过,如果你是用jbuilder做ejb的话,可以使用EJB TestClient向导生成client类,在正确地配置了服务器的情况下,jbuilder会自动为你选择一个和服务器相关的正确的上下文工厂。
vage 2005-06-18
  • 打赏
  • 举报
回复
我试过了,

不能找到符号Properties
could not find symbol "Properties")
是不是有哪个类没有包含。
vage 2005-06-18
  • 打赏
  • 举报
回复
我没下载它的帮助文档,而且本文E文不好,看不懂。
naxin 2005-06-18
  • 打赏
  • 举报
回复
查server带的例子.
vage 2005-06-18
  • 打赏
  • 举报
回复
我用的是sun application server,我该用怎样的上下文呢
梦想家起飞 2005-06-18
  • 打赏
  • 举报
回复
关键是要使用和当前ejb容器相匹配的上下文工厂(NamingContextFactory),sun application server、weblogic、boss、websphere等都有自己的不同的上下文工厂实现,不能乱用。
hzh_net 2005-06-18
  • 打赏
  • 举报
回复
Properties env=new Properties();
env.setProperty("Context.INITIAL_CONTEXT_FACTORY","org.jnp.interfaces.NamingContextFactory");
env.setProperty("Context.PROVIDER_URL","localhost:1099");
env.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
InitialContext ic=new InitialContext(env);
-------------------------------------------
其中的localhost:1099,端口号是本机的...
------------------------------------------
vage 2005-06-18
  • 打赏
  • 举报
回复
请问 ailling:

Properties env=new Properties();
env.setProperty("Context.INITIAL_CONTEXT_FACTORY","org.jnp.interfaces.NamingContextFactory");
env.setProperty("Context.PROVIDER_URL","localhost:1099");
env.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
InitialContext ic=new InitialContext(env);

其中的localhost:1099,端口号是否要改成4848,
ailling 2005-06-17
  • 打赏
  • 举报
回复
javax.naming.NoInitialContextException: Need to specify class name in environmen

--------------------------------
需要这么做
Properties env=new Properties();
env.setProperty("Context.INITIAL_CONTEXT_FACTORY","org.jnp.interfaces.NamingContextFactory");
env.setProperty("Context.PROVIDER_URL","localhost:1099");
env.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
InitialContext ic=new InitialContext(env);
ses127127 2005-06-17
  • 打赏
  • 举报
回复
Object obj=initContext.lookup("myRemoteObject"); 改成:
Object obj=initContext.lookup("java:comp/env/myRemoteObject");
vage 2005-06-17
  • 打赏
  • 举报
回复
再问一下大家,运行时,需不需要这样打:

java -classpath %J2EE_HOME%\lib\j2ee.jar;.;HelloWorldClient.jar; myClient

另外,是不是我的文件存放位置不对啊
vage 2005-06-17
  • 打赏
  • 举报
回复
我的其他几个文件如下:
/**
* 第一个: myRemoteInterface
* 定义一个新的接口继承javax.ejb.EJBObject。新定义的接口中的每一个方法都必须抛出
* java.rmi.RemoteException异常。
*/
package myclass;

public interface myRemoteInterface extends javax.ejb.EJBObject
{
public String message(String str)throws java.rmi.RemoteException;
}

/**
* 第二个 : myRemoteObject
* 定义一个类来实现javax.ejb.SessionBean接口。并在该类中实现在第一步中编写的接口中所定义的方法。
*/
public class myRemoteObject implements javax.ejb.SessionBean
{
public String message(String str)throws java.rmi.RemoteException
{
System.out.println("Remote Object Received From Client: \""+str+"\""); //打印(从客户端)接收到的字符串。
return "Hello,I'm Remote Object,I received your message: \'"+str+"\'"; //返回一应答字符串。
}

public myRemoteObject() {}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(javax.ejb.SessionContext sc) {}
}


/**
* 第三个: myRemoteHome
* 定义一个类继承javax.ejb.EJBHome 。
*/
package myclass;

import myclass.*;

public interface myRemoteHome extends javax.ejb.EJBHome
{
myRemoteInterface create() throws java.rmi.RemoteException,javax.ejb.CreateException;
}

还有一个文件就是myClass

67,513

社区成员

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

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