救命啊,要死人了啊javax.ejb.EJBException: java.lang.NullPointerException

时间:2022-05-07 10:45:12
javax.ejb.EJBException: java.lang.NullPointerException
at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:63)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:304)
at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:809)
at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:608)
at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:406)
at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:173)
Caused by: java.lang.NullPointerException
at cn.edu.xmu.cms.controller.impl.GroupManager.getGroupById(GroupManager.java:85)
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.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:304)
at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:809)
at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:608)
at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:406)
at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:173)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:163)
at org.jboss.remoting.Client.invoke(Client.java:1634)
at org.jboss.remoting.Client.invoke(Client.java:548)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:67)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:107)
at $Proxy0.getGroupById(Unknown Source)
at cn.edu.xmu.cms.controller.impl.GroupManagerTest.testGetGroupById(GroupManagerTest.java:50)
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 junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:74)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:67)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:107)
at $Proxy0.getGroupById(Unknown Source)
at cn.edu.xmu.cms.controller.impl.GroupManagerTest.testGetGroupById(GroupManagerTest.java:50)
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 junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
有一个GroupManager的session bean,对应一个team的实体,使用junit测试的时候,只要是em.perisist()就出错,不知道是为什么,找了两天都没解决,求各位高人救命!

8 个解决方案

#1


GroupManager中的getGroupById方法代码如下:
public List getGroupById(int userId, int groupId) {
// TODO Auto-generated method stub
Team t=new Team();
t.setGroupName("asdfdas");
t.setGoupMaxNum(5);
t.setGroupLeaderId(23);
t.setGroupMinNum(0);
t.setGroupLevel(Level.COURSE);
em.persist(t);
em.createQuery("select t from Team t");
System.out.print(q.getResultList());
     return q.getResultList();
}

#2


junit代码如下:
package cn.edu.xmu.cms.controller.impl;

import java.util.Hashtable;

import javax.ejb.EJB;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.persistence.PersistenceContext;

import junit.framework.TestCase;
import cn.xmu.edu.cms.controller.IGroupManager;



@PersistenceContext
@EJB(name="CMSEar/GroupManager/remote")
public class GroupManagerTest extends TestCase {
 private IGroupManager gm;
 private InitialContext ic;
// private String name;
protected void setUp()throws Exception {
super.setUp();


ic = new InitialContext();       


gm=(IGroupManager)ic.lookup("CMSEar/GroupManager/remote");
System.out.print(gm.toString());
}

protected void tearDown() throws Exception {
super.tearDown();
}

public void testGetGroupById() {
assertEquals(gm.getGroupById(1,1),null);
}
}
麻烦各位了,先谢谢大家了

#3


检查主键生成策略以及pojo中关联关系对应对象设置是否正确。

#4


System.out.print( q.getResultList());

q有可能为空

#5


引用 3 楼 ywchenfeng 的回复:
检查主键生成策略以及pojo中关联关系对应对象设置是否正确。

应该不是这个的问题,因为我已经生成了表,就是在读写操作的时候出异常

#6


引用 3 楼 ywchenfeng 的回复:
检查主键生成策略以及pojo中关联关系对应对象设置是否正确。

淫才啊,调试了好久,还真是这句除了问题,不过不是空不空的问题,我把list对象直接输出了,应该要用循环输出的!

#7


gm=(IGroupManager)ic.lookup("CMSEar/GroupManager/remote");
这里,gm是不是为空啊?

#8


引用 6 楼 q849960 的回复:
引用 3 楼 ywchenfeng 的回复:

检查主键生成策略以及pojo中关联关系对应对象设置是否正确。

淫才啊,调试了好久,还真是这句除了问题,不过不是空不空的问题,我把list对象直接输出了,应该要用循环输出的!

Negertive!我已经看过了JNDI,这个接口是已经有了的

#1


GroupManager中的getGroupById方法代码如下:
public List getGroupById(int userId, int groupId) {
// TODO Auto-generated method stub
Team t=new Team();
t.setGroupName("asdfdas");
t.setGoupMaxNum(5);
t.setGroupLeaderId(23);
t.setGroupMinNum(0);
t.setGroupLevel(Level.COURSE);
em.persist(t);
em.createQuery("select t from Team t");
System.out.print(q.getResultList());
     return q.getResultList();
}

#2


junit代码如下:
package cn.edu.xmu.cms.controller.impl;

import java.util.Hashtable;

import javax.ejb.EJB;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.persistence.PersistenceContext;

import junit.framework.TestCase;
import cn.xmu.edu.cms.controller.IGroupManager;



@PersistenceContext
@EJB(name="CMSEar/GroupManager/remote")
public class GroupManagerTest extends TestCase {
 private IGroupManager gm;
 private InitialContext ic;
// private String name;
protected void setUp()throws Exception {
super.setUp();


ic = new InitialContext();       


gm=(IGroupManager)ic.lookup("CMSEar/GroupManager/remote");
System.out.print(gm.toString());
}

protected void tearDown() throws Exception {
super.tearDown();
}

public void testGetGroupById() {
assertEquals(gm.getGroupById(1,1),null);
}
}
麻烦各位了,先谢谢大家了

#3


检查主键生成策略以及pojo中关联关系对应对象设置是否正确。

#4


System.out.print( q.getResultList());

q有可能为空

#5


引用 3 楼 ywchenfeng 的回复:
检查主键生成策略以及pojo中关联关系对应对象设置是否正确。

应该不是这个的问题,因为我已经生成了表,就是在读写操作的时候出异常

#6


引用 3 楼 ywchenfeng 的回复:
检查主键生成策略以及pojo中关联关系对应对象设置是否正确。

淫才啊,调试了好久,还真是这句除了问题,不过不是空不空的问题,我把list对象直接输出了,应该要用循环输出的!

#7


gm=(IGroupManager)ic.lookup("CMSEar/GroupManager/remote");
这里,gm是不是为空啊?

#8


引用 6 楼 q849960 的回复:
引用 3 楼 ywchenfeng 的回复:

检查主键生成策略以及pojo中关联关系对应对象设置是否正确。

淫才啊,调试了好久,还真是这句除了问题,不过不是空不空的问题,我把list对象直接输出了,应该要用循环输出的!

Negertive!我已经看过了JNDI,这个接口是已经有了的