2015-09-10 4 views
0

У меня есть следующий определенный в настойчивостьюEJB EntityManager Исключение

<?xml version="1.0" encoding="UTF-8" ?> 
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0" 
      xmlns="http://java.sun.com/xml/ns/persistence"> 
    <persistence-unit name="test" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/testDS</jta-data-source> 
    <class>test.entity.Employees</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
     <property name="eclipselink.target-server" value="OC4J"/> 
     <property name="javax.persistence.target-database" value="Oracle"/> 
     <property name="javax.persistence.logging.parameters" value="TRUE"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

Java фрагмента кода, где я вызывающая EntityManager, я получаю исключение. Как я могу решить проблему?

с источником данных, не JTA, я в состоянии получать данные с REST и CriteriaBuilder делает работу без каких-либо сбоев

Фрагмент кода

@Stateless(name="SessionEJB2") 
@Path("/mypath") 
public class SessionEJB2Bean implements SessionEJB2{ 
    @PersistenceContext(unitName="test") 
    private EntityManager em; 
    ....... 
    ....... 

    CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder(); // getting excpetion 

стек Исключение

The RuntimeException could not be mapped to a response, re-throwing to the HTTP container 
    java.lang.NullPointerException 
    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.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) 
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391) 
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381) 
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 
    at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:734) 
    at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:391) 
    at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:908) 
    at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:458) 
    at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:226) 
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:127) 
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:116) 
    at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) 
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) 
    at java.lang.Thread.run(Thread.java:662) 
+0

Кажется, что EntityManager не вводится. Один случай был бы, если persistence.xml находится на неправильном пути. Где вы его разместили? Кстати, чтобы ваш вопрос был полным, предоставьте нам трассировку стека исключений (или, по крайней мере, часть с исключением NullPointerException). –

+0

Можете ли вы показать трассировку стека неудачи? Меня интересует, как вызывается SessionEJB2Bean; он вызывается контейнером JAX-RS? Если это так, похоже, что контейнер JAX-RS не интегрируется с контейнером EJB. Используете ли вы сервер приложений, который интегрировал JAX-RS с EJB, или вы просто включаете библиотеку JAX-RS в ваше приложение? –

+0

@bkail Я включил трассировку стека исключений. В моем приложении я включаю библиотеку JAX-RS. – user75ponic

ответ

2

Это не можно использовать аннотации EE-инъекций в классе JAX-RS, когда вы встроили библиотеку JAX-RS в ваше приложение. Это возможно только в том случае, если вы используете JAX-RS с сервера приложений, который интегрировал контейнер JAX-RS с EJB, CDI или управляемым компонентом.

Для того чтобы использовать JPA в контейнере при встраивании библиотеки JAX-RS в приложение, вы должны объявить ресурс JPA в WAR (либо web.xml, либо как аннотацию уровня на слушателе, или какой-либо другой сервлет в приложении), а затем использовать JNDI для доступа к ресурсу JPA, управляемому контейнером. Обратите внимание: ваш сервер приложений должен поддерживать JPA, управляемый контейнером, иначе этот подход не будет работать, и вам нужно будет использовать JPA, управляемую приложением.

Смежные вопросы