我不能从另一个项目调用EJB3

时间:2014-07-24 10:29:24

标签: java javabeans ejb-3.0

我很难理解如何调用ejb,因为我通过一个简单的例子得到了错误。

我有一个名为Test的EJB项目。它只有两个类:HelloWorldBean,HelloWorldInterface

    //HelloWorldBean 
package com.demo; 
import javax.ejb.Remote; 
import javax.ejb.Stateless;

@Stateless
@Remote(HelloWorldInterface.class) 
public class HelloWorldBean implements HelloWorldInterface {

        public String helloWorld() {
            return "Hello world !";
        } 
}

    //HelloWorldInterface  
package com.demo; 
public interface HelloWorldInterface {
            String helloWorld();
        }

两者都打包在名为Test.WAR的WAR中,里面有Test.jar,它部署在WAS 7.0服务器中。

我有另一个名为TestWeb的项目,它将被打包并部署在同一台服务器中。 在这里,我实现了mvc的控制器。

package controller;
import javax.ejb.EJB;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class My_Controller {

    @EJB
    private HelloWorldInterface helloBean;

    @RequestMapping("testpage")
    public ModelAndView mostraPagina(){
        ModelAndView model = new ModelAndView();
        model.setViewName("testpage");
        model.addObject("hello", "? " + "EJB:" + helloBean.helloWorld());

        return model;
    }
}

我在以下几行中收到错误:

  • private HelloWorldInterface helloBean;
  • model.addObject(" hello","?" +" EJB:" + helloBean.helloWorld());

编辑: 错误是:

HelloWorldInterface cannot be resolved to a type. Location: My_Controller.java

1 个答案:

答案 0 :(得分:0)

我从一开始就创建了一个新的ejb项目,我选择生成他的客户端。之后,我使用远程接口创建一个会话bean,并使用RAD选项“使用Web项目公开RPC适配器服务”。 通过这种方式,我有两个带有两个罐子的EAR(包括客户端)。

粗略地说:

  • 第一次EAR
    • EJB JAR,Client JAR
  • 第二次EAR
    • Web JAR,客户端JAR