2011-08-19 181 views
0

我试图在Netbeans7.0中使用实体类(JPA),但它不起作用。我不能在Netbeans7.0中使用实体类(JPA)

  1. 我创建企业应用程序名称BookApp

创建实体类

  1. 我右键单击在BookApp的EJB,并选择实体类弗朗数据库
  2. 在对话框中从数据库I中插入新实体类JNDI名称:jdbc/test用于连接到测试数据库并选择表格书籍。之后,我单击下一步以插入包装:实体并单击完成。

创建会话Bean

  1. 我右键单击在BookApp的EJB,并选择实体类会话Bean,然后单击下一步。
  2. 我点击添加全部>>然后点击下一步。
  3. 我插入包装:sb,创建接口:本地然后单击完成。

创建Web应用程序

  1. 我右击BookApp战和选择HTML插入HTML 文件名:findBook并单击Finish。
  2. 我把这个代码在HTML文件中
<form action="ShowBook" method="POST"> 
<h2>Search Book from ISBN </h2> 
Enter ISBN <input type="text" name="isbn" value="" /> 
<input type="submit" value="Find" /> 
</form> 
  1. 我右键单击BookApp战和选择Servlet的插入文件名:ShowBook套餐:servlet的和单击完成。
  2. 我右键单击编辑器并选择插入代码...>调用企业Bean ...
  3. 在对话框中调用企业Bean的我选择BooksFacade,然后单击确定。
  4. 我取消注释html并在out.println(“”);
String isbn = request.getParameter("isbn"); 
Books book = booksFacade.find(isbn); 
out.println("Title: " + book.getTitle()+ "<BR>"); 
out.println("Author: " + book.getAuthor() + "<BR>"); 
out.println("Price: " + book.getPrice() + "<BR>"); 
  1. 我清理并生成BookApp。
  2. 我运行BookApp。
  3. 我去这个URL http://localhost:8080/BookApp-war/findBook.html并从书籍表中插入isbn,但是当我点击查找按钮它显示这样的错误。
HTTP Status 500 - 

type Exception report 

message 

descriptionThe server encountered an internal error() that 

履行该请求阻止它。

exception 

javax.ejb.EJBException 

我不知道我错了。我删除Session Beans并再次创建Session Bean,但没有创建Interface。当我运行BookApp时,它显示相同的错误。我是EJB新手。请帮帮我。


我不知道哪里是错误,但这个代码将出现在服务器日志,而我建立EJB项目。

INFO: file:/C:/Users/Mc/Documents/NetBeansProjects/BookApp/dist/gfdeploy/BookApp/BookApp-ejb_jar/_BookApp-ejbPU logout successful 
SEVERE: java.io.IOException: Error creating temporary file transfer folder 
    at org.glassfish.admin.payload.PayloadFilesManager.createTempFolder(PayloadFilesManager.java:718) 
    at org.glassfish.admin.payload.PayloadFilesManager.createTempFolder(PayloadFilesManager.java:727) 
    at org.glassfish.admin.payload.PayloadFilesManager.access$100(PayloadFilesManager.java:95) 
    at org.glassfish.admin.payload.PayloadFilesManager$Temp.<init>(PayloadFilesManager.java:303) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$UploadedFilesManager.extractFiles(CommandRunnerImpl.java:1413) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$UploadedFilesManager.<init>(CommandRunnerImpl.java:1394) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$UploadedFilesManager.<init>(CommandRunnerImpl.java:1372) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:821) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235) 
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:465) 
    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:222) 
    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168) 
    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234) 
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) 
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) 
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) 
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) 
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.io.IOException: Unknown error creating directory C:\Users\Mc\.netbeans\7.0\config\GF3\domain1\applications\xfer-5751472689020834694 
    at org.glassfish.admin.payload.PayloadFilesManager.createTempFolder(PayloadFilesManager.java:709) 
    ... 29 more 

而这段代码出现在服务器日志中,我在点击HTML中的查找按钮来调用ShowBook servlet。

INFO: entity.Books actually got transformed 
INFO: Portable JNDI names for EJB BooksFacade : [java:global/BookApp/BookApp-ejb/BooksFacade, java:global/BookApp/BookApp-ejb/BooksFacade!sb.BooksFacadeLocal] 
INFO: WEB0671: Loading application [BookApp#BookApp-war.war] at [BookApp-war] 
INFO: BookApp was successfully deployed in 7,063 milliseconds. 
INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver. 
INFO: EclipseLink, version: Eclipse Persistence Services - 2.2.0.v20110202-r8913 
INFO: file:/C:/Users/Mc/Documents/NetBeansProjects/BookApp/dist/gfdeploy/BookApp/BookApp-ejb_jar/_BookApp-ejbPU login successful 
WARNING: A system exception occurred during an invocation on EJB BooksFacade method public entity.Books sb.BooksFacade.find(java.lang.Object) 
javax.ejb.EJBException 
    at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5194) 
    at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5092) 
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4880) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2039) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1990) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) 
    at $Proxy203.find(Unknown Source) 
    at servlets.ShowBook.processRequest(ShowBook.java:46) 
    at servlets.ShowBook.doPost(ShowBook.java:79) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:755) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) 
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) 
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) 
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) 
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) 
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) 
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.IllegalArgumentException: You have provided an instance of an incorrect PK class for this find operation. Class expected : class java.lang.Integer, Class received : class java.lang.String. 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.findInternal(EntityManagerImpl.java:695) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:619) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:498) 
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.find(EntityManagerWrapper.java:320) 
    at sb.AbstractFacade.find(AbstractFacade.java:36) 
    at sb.BooksFacade.find(BooksFacade.java:16) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) 
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5367) 
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801) 
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:862) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801) 
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:371) 
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5339) 
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5327) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214) 
    ... 31 more 

WARNING: StandardWrapperValve[ShowBook]: PWC1406: Servlet.service() for servlet ShowBook threw exception 
javax.ejb.EJBException 
    at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5194) 
    at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5092) 
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4880) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2039) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1990) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) 
    at $Proxy203.find(Unknown Source) 
    at servlets.ShowBook.processRequest(ShowBook.java:46) 
    at servlets.ShowBook.doPost(ShowBook.java:79) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:755) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) 
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) 
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) 
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) 
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) 
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) 
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.IllegalArgumentException: You have provided an instance of an incorrect PK class for this find operation. Class expected : class java.lang.Integer, Class received : class java.lang.String. 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.findInternal(EntityManagerImpl.java:695) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:619) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:498) 
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.find(EntityManagerWrapper.java:320) 
    at sb.AbstractFacade.find(AbstractFacade.java:36) 
    at sb.BooksFacade.find(BooksFacade.java:16) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) 
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5367) 
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801) 
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:862) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801) 
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:371) 
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5339) 
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5327) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214) 
    ... 31 more 
+0

DId您尝试在没有EJB的情况下启动webapp,这是否工作? – home

+0

Glassfish日志文件将为您提供有关错误的更多信息,而不是浏览器中显示的消息。检查日志。 –

+0

你将不得不通过查看异常的堆栈跟踪来查看究竟发生了什么,查看你的服务器日志以找出并在这里发布,否则将很难帮助你。 – Kris

回答

1

实体管理器不喜欢你的String参数。

Caused by: java.lang.IllegalArgumentException: You have provided an 
instance of an incorrect PK class for this find operation. Class 
expected : class java.lang.Integer, Class received : class 
java.lang.String. 

实体管理器的find方法搜索具有给定id的实体或具有给定PK的db视图。我认为你有一个这样的图书实体:

@Entity  
public class Book { 

    @Id 
    private Integer isbn; 


.... 

所以你必须传递一个Integer到find方法。

em.find(Integer.parseInt(isbn)) //just a hack 

我希望能帮到你。