我试着建立一个简单的“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。