程序中 没有从命令行要求参数   启动程序不需要什么!但是, 读取了 properties 文件可能需要什么参数server 端的程序呢?

解决方案 »

  1.   

    你有没有看《Mastering EJB》第二版这本书啊?服务器端程序太多了。:(
      

  2.   

    没有人运行过这个程序吗,谁来教教我啊。我是用jcreator照书抄的。
      

  3.   

    ejb服务器的配置都很麻烦的。
      

  4.   

    首先就你的客户端来讲,肯定是有问题的:你在初始化Context时,没有指定jndi所要求的服务,就是Context的INITIAL_CONTEXT_FACTORY;同时,url(就是PROVIDER_URL)也没有给出。所以,jndi是无法找到home接口的,找不到home接口,就找不到控制类,所以,对ejb的调用就会失败。服务器短的代码,是一个非常典型的ejb结构,就不详细讲了
      

  5.   

    楼上的大师,这是<<精通EJB>>书上的源代码,不是有错,只不过他的参数System.getProperties()是从命令行读取的,我不知道该如何写.
      

  6.   

    好了,我搞定一些问题了,但在这运行到这里出错了,怎么会事?
    ctx.lookup("HelloHome");  说 cann't resovle hellohome 这一项.
      

  7.   

    你把Properties properties = System.getProperties();改成:                    Properties props = new Properties();
                        props.put(Context.INITIAL_CONTEXT_FACTORY,
                                  "weblogic.jndi.WLInitialContextFactory");
                        String url = "t3://" + text_ip.getText().trim() + ":" +
                                     text_port.getText().trim();
                        props.put(Context.PROVIDER_URL, url);
                        Context ctx = new InitialContext(props);
                        
    就可以了。
      

  8.   

    不好意思,String url应该赋值成你的EJB发布的地址。
      

  9.   

    运行到这里出错:ctx.lookup("HelloHome");  说 cann't resovle hellohome 这一项. 为什么 ???????
      

  10.   

    运行到这里出错:ctx.lookup("HelloHome");  说 cann't resovle hellohome 这一项. 为什么 ???????
      

  11.   

    这个例子我在JBuilder9 + weblogic8.1上实现过应该是:
    ctx.lookup("HelloBean");
      

  12.   

    改成 HelloBean 也不行,还是说 cann't resovle  HelloBean .
    我用的是 jcerator, 我现在不想用太高级的IDE.
      

  13.   

    首先应该确保你的EJB容器(如weblogic)中部署了Hello这个EJB。
    其次程序关心的是EJB的接口,而不是实现。
    你需要把HelloHome和Hello接口import进来,否则肯定无法解析(resolve),也就是说,你需要HelloHome和Hello这两个class。
      

  14.   

    谁可以帮我一下啊,我可以把我的服务器 ejb.jar 发过你,还有 客户端 代码,你帮我配置运行一下,我给你100分+100分,好不好, 急死了...........
      

  15.   

    谁可以帮我一下啊,我可以把我的服务器 ejb.jar 发过你,还有 客户端 代码,你帮我配置运行一下,我给你100分+100分,好不好, 急死了...........
      

  16.   

    其实你只要在运行时加上参数jndi需要的参数就行了。你也可以硬编码在客户端程序里,这样不需要加参数运行。给你个硬编码的例子
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
    env.put(Context.PROVIDER_URL,"localhost:1099");
    try
    {
    Context ctx = new InitialContext(env);
    Object obj = ctx.lookup("HelloHome");
    ……………………
      

  17.   

    前面的初始化不说了,后面的应该是ctx.lookup("Hello");,你到weblogic控制台看看服务器端部署后的JNDI树就知道绑定的JNDI名是什么了
      

  18.   

    另外可以参考一下我写的一个东西:
    http://blog.csdn.net/jiangnanyuzi/archive/2004/11/29/197485.aspx
      

  19.   

    初始化没有问题了,都说了已经运行到 lookup()才出的问题.------------------我的客户端-----------------------
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import java.util.Properties;public class HelloClient{

    public static void main(String[] args) throws Exception{
    Properties p = System.getProperties();

    // WebLogic下调用EJB
    p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    p.put(Context.PROVIDER_URL, "t3://210.29.110.220:7001");


    Context ctx=new InitialContext(p);
    System.out.println("连接服务器及初始化完成");
    //p.list(System.out);

    Object obj=ctx.lookup("HelloHome");
    HelloHome Home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(obj,HelloHome.class);
    Hello hello=Home.create();
    System.out.println(hello.hello());
    hello.remove();
    }
    }
    ------------------------------------------------------
    ------------------ weblogic.ejb.jar.xml--------------------
    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN' 
    'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'><weblogic-ejb-jar>
    <weblogic-enterprise-bean>
    <ejb-name>Hello</ejb-name>
    <jndi-name>HelloJndi</jndi-name>
    </weblogic-enterprise-bean>
    </weblogic-ejb-jar>
    ------------------------------------------------------书上就是这么写的  lookup("HelloHome");
    是不是我配置 ejb 时有问题,我是直接把它copy到 application下,启动weblogic8.1后点那个 test反应OK.大家再看看什么原因啊,最好是亲自做过这个例子的,不要是使用JBuilder,因为你换一个开发工具,你又不知道怎么回事了.