使用JNDI架构的简单ejb客户端应用程序(servlet)。

时间:2015-01-24 17:17:44

标签: eclipse java-ee servlets

我试着建立一个简单的“Hello World"使用EJB和Servlet的应用程序。我对它应该是什么样子感到非常困惑。我在eclipse中有两个项目。一个包含EJB无状态会话bean及其接口(它们都在同一个包中),另一个包含bean,接口和servlet,它们应该能够调用两个bean方法。我已将远程项目(从其他项目)添加到" Projects"在构建路径中。现在我已将远程接口导入servlet。现在servlet看起来像这样:

import pl.test.IHelloRemote;
import pl.other.IDateRemote;

@WebServlet("/TestServlet")
public class Control extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private InitialContext ic;
    private IHelloRemote iHelloRemote;
    private IDateRemote iDateRemote;

    public Control() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            ic = new InitialContext();
            iHelloRemote = ic.lookup ("java:global/test-project/HelloBean!pl.test.iHelloRemote");
            iDateRemote = ic.lookup ("java:global/other-project/DateBean!pl.other.iDateRemote");
        } catch (NamingException ex) {
            ex.printStackTrace();
        }

        iHelloRemote.sayHello();
        iDateRemote.getDate();
    }
}

正如我提到"其他项目"包含在构建路径中。以下是我想要使用的单个bean的样子:

package pl.other;

import javax.ejb.Stateless;

@Stateless
public class DateBean implements IDateRemote {

    public DateBean() {}

    @Override
    public void getDate {
        //some code here
    }
}

现在我的问题。

为什么(以及如何解决这个问题)在部署期间我收到错误: 类[Lpl / other / IDateRemote; ] 未找到。加载[类TestServlet]

时出错

EJB bean可以位于默认包中吗? Elipse为什么允许这样做?

bean接口应该位于何处?在与bean相同的包中?在Servlet包中?什么是最佳实践"在这种项目中设置文件? 至于现在的设置如下:

test-project
|- (default package)
  |- TestServlet
|- pl.test
  |- IHelloRemote
  |- HelloBean

other-project
|- pl.other
  |- IDateRemote
  |- DateBean

感谢您的回复和耐心。 SMOK。

0 个答案:

没有答案