客户端应用程序中的EJB远程接口

时间:2012-05-29 16:57:59

标签: java ejb-3.0

我从EJB开始,我遇到了问题:

我在youtube上受到这个啧啧的引导 - http://www.youtube.com/watch?v=6xJx9hpzkbs (这是法语,但并不重要)

所以基本上tut(和我一样)做的是,创建一个EJB项目,创建无状态会话Bean(MyBean)和一个远程接口(MyBeanRemote),一个简单的方法返回一个字符串。

他还创建了动态Web项目,并在Servlets doGet方法中使用以下代码来调用bean方法:

Context con = new InitialContext();
Object ob = con.lookup("MyBean/remote");

if(ob != null){
    MyBeanRemote bean = (MyBeanRemote) ob;
    // And then prints out the returned value from the method
}

但问题是我在客户端项目中没有可用的MyBeanRemote接口。他是怎么得到的? (视频5:17)

2 个答案:

答案 0 :(得分:0)

如果你的是基于maven的项目,你可以通过在你的pom.xml文件中添加一个插件来生成客户端jar,如下所示

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ejb-plugin</artifactId>

            <configuration>
                <generateClient>true</generateClient>
                <clientIncludes>
                    <clientInclude>**/*Local.class</clientInclude>
                    <clientInclude>**/*Remote.class</clientInclude>
                    <clientInclude>**/*Exception.class</clientInclude>
                </clientIncludes>
            </configuration>
        </plugin>
    </plugins>
</build>

答案 1 :(得分:0)

正如您在2:47分钟所看到的,他在服务器中部署了EJB(包括接口)。所以你没有明确地将它添加到项目中(这是远程 bean的想法)。所以你只需要知道名称的接口(“MyBean / remote”)来进行查找。然后容器将解析并找到正在实现该接口的正确对象。

这是一种使用EJB的方法,稍后您可以看到您可以使用本地接口,甚至可以使用无bean的接口视图。也许你在想“远离什么?,本地到底是什么?”嗯...到JVM(通常)。您仍然可以在同一JVM中对EJB进行远程调用(因为EJB存在于其他服务器中的JVM),这比本地/无接口调用的成本更高。

这个基本概念通常用作:依赖注入,其中您只描述接口的对象(加上@EJB注释),容器将找出正确的对象。

要了解有关何时选择本地与远程的更多信息,请参阅此文章: http://docs.oracle.com/javaee/6/tutorial/doc/gipjf.html