×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

一个EJB的问题

我从两个不同的地方看到几个EJB互相调用和EJB调用其他resouce的例子, 例如:
EJB调用EJB:
InitialContext initial = new InitialContext();
finCalc.stateless.FinancialNeedCalculatorHome home =
(finCalc.stateless.FinancialNeedCalculatorHome)
javax.rmi.PortableRemoteObject.narrow(
initial.lookup("java:comp/env/ejb/CalculatorService"),
finCalc.stateless.FinancialNeedCalculatorHome.class);

EJB调用DataSource :
Context initial = new InitialContext();
DataSource dataSource =
(DataSource)initial.lookup("java:comp/env/jdbc/sportsJDBC");

我发现在initial.lookup中都有"java:comp/env/", 无一例外, 我想这不是巧合, 那么是sun的硬性规定吗? 若是, 谁能告诉我它的出处在哪?或者相关线索.
Report

Replies, comments and Discussions:

  • 工作学习 / IT技术讨论 / 一个EJB的问题
    我从两个不同的地方看到几个EJB互相调用和EJB调用其他resouce的例子, 例如:
    EJB调用EJB:
    InitialContext initial = new InitialContext();
    finCalc.stateless.FinancialNeedCalculatorHome home =
    (finCalc.stateless.FinancialNeedCalculatorHome)
    javax.rmi.PortableRemoteObject.narrow(
    initial.lookup("java:comp/env/ejb/CalculatorService"),
    finCalc.stateless.FinancialNeedCalculatorHome.class);

    EJB调用DataSource :
    Context initial = new InitialContext();
    DataSource dataSource =
    (DataSource)initial.lookup("java:comp/env/jdbc/sportsJDBC");

    我发现在initial.lookup中都有"java:comp/env/", 无一例外, 我想这不是巧合, 那么是sun的硬性规定吗? 若是, 谁能告诉我它的出处在哪?或者相关线索.
    • java:comp/env is a reference name , not a sun的硬性规定. you can directly use JNDI name.
      • 谢谢, 但仍有一点不理解
        本文发表在 rolia.net 枫下论坛根据答复: java:comp/env is a reference name , not a sun的硬性规定. you can directly use JNDI name.

        这个"reference name" 在此作和理解? 它是某个Object的reference吗?
        如果是, 那么是哪个Object?

        这个"java:comp/env" 是否象保留字一样不能改?它是业内人士遵守的习惯还是另有什么来头?我是否可以用"java_comp/env"或"java:env"或"java:comp/"
        等等来替掉"java:comp/env" ?

        劳驾请帮我看一下我如下理解是否对:
        因为采用的是InitialContext initial = new InitialContext();方式生成的InitialContext instance, 无任何property赋值,故lookup method 只可能用JNDI name或"java:comp/env/XXXXXXXX"来作参数?
        其中"XXXXXXXX"部分为web-app_2_2.dtd或ejb_jar_1_!.dtd中ejb-ref-name
        tag 定义的名字.

        如果采用下面方式(具体在此使用的factory class及URL不一定对)生成的InitialContext 的instance的lookup method 是否可以直接使用ejb_jar_1_!.dtd中ejb-name tag 定义的EJB名字?

        Properties prop = new Properties();
        prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,
        "com.evermind.server.ApplicationClientInitialContextFactory");
        prop.setProperty( Context.PROVIDER_URL,
        "ormi://localhost/BMPSportsApp" );
        prop.setProperty(Context.SECURITY_PRINCIPAL, "admin");
        prop.setProperty(Context.SECURITY_CREDENTIALS, "123");

        InitialContext initial = new InitialContext(prop);

        Object homeObject = initial.lookup("BMPSportsBean");

        实在感谢你的赐教.更多精彩文章及讨论,请光临枫下论坛 rolia.net