无法参数化ejb函数

时间:2010-08-27 20:50:23

标签: servlets java-ee ejb-3.0

我可以像这样写一个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

印度

3 个答案:

答案 0 :(得分:1)

Servlet显然没有在运行时看到带有String参数的Bean版本(类路径上可能有多个版本)。 这可能是一个包装问题,也就是部署问题。您需要告诉我们有关打包和部署应用程序的方式的更多信息。

答案 1 :(得分:0)

清理并重建您的应用程序,然后再次部署。还要检查依赖项。似乎EJB合约对servlet不可见。

答案 2 :(得分:0)

我知道了......

在netbeans中,我必须做以下事情......

  1. 清理并构建Ejb项目

  2. 部署Ejb项目

  3. 部署WebApplication(war)项目(并确保ejb jar位于netbeans自动执行的库中,不用担心)。