我可以像这样写一个ejb ......
@Stateless
public class AnotherBean {
@PersistenceContext(unitName = "VoidJPA-ejbPU")
private EntityManager em;
public void newTest() {
System.out.println("Testing");
}
}
并使用servlet
调用它@EJB
private AnotherBean nsb;
...
...
nsb.newTest();
但每当我将变量放入newTest()时,我都无法访问它
public void test(String i)
servlet和EJB都已部署但仍然存在 服务器给出错误
WARNING: StandardWrapperValve[HelloEjb]: PWC1406: Servlet.service() for servlet
HelloEjb threw exception
java.lang.NoSuchMethodError: enew.AnotherBean.newTest(Ljava/lang/String;)V
at jpa.HelloEjb.processRequest(HelloEjb.java:44)
at jpa.HelloEjb.doGet(HelloEjb.java:85)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
.....
........
......
任何帮助
由于
Pradyut
印度
答案 0 :(得分:1)
Servlet显然没有在运行时看到带有String
参数的Bean版本(类路径上可能有多个版本)。
这可能是一个包装问题,也就是部署问题。您需要告诉我们有关打包和部署应用程序的方式的更多信息。
答案 1 :(得分:0)
清理并重建您的应用程序,然后再次部署。还要检查依赖项。似乎EJB合约对servlet不可见。
答案 2 :(得分:0)
我知道了......
在netbeans中,我必须做以下事情......
清理并构建Ejb项目
部署Ejb项目
部署WebApplication(war)项目(并确保ejb jar位于netbeans自动执行的库中,不用担心)。