Я пытаюсь внедрить PersistenceContex в POJO с помощью аннотации @PersistenceContex, я прочитал, что мне нужно сделать, чтобы POJO удалось это сделать. Поэтому я внедряю свой класс POJO в сервлет (так что теперь он управляется как зависимый объект, я прав?), Но когда сервлет пытается вызвать метод из внедренного объекта, я получаю ошибку:
java.lang.IllegalStateException:
Невозможно получить
EntityManagerFactory для unitName null
Похоже, что PersistenceContext не внедряется в POJO должным образом, что я должен сделать, чтобы он работал?
Мой класс POJO выглядит так:
public class FileEntityControlerImpl implements FileEntityInterface {
@PersistenceContext
EntityManager entityManager;
@Override
public void createFile(FileEntity fileEntity) {
...}
@Override
public FileEntity retriveFile(String fileName) {
...}
Точка впрыска:
@Inject
FileEntityInterface fileController;
Если я использую SLSB и внедряю с помощью @EJB, он работает нормально.
.. :: ОБНОВЛЕНИЕ :: ..
StackTrace:
ПРЕДУПРЕЖДЕНИЕ: StandardWrapperValve [ResourcesServlet]: PWC1406: Servlet.service () для исключения сервлета ResourcesServlet, вызвавшего исключение
java.lang.IllegalStateException: невозможно получить EntityManagerFactory для unitName MambaPU
на com.sun.enterprise.container.common.impl.EntityManagerWrapper.init (EntityManagerWrapper.java:121)
на com.sun.enterprise.container.common.impl.EntityManagerWrapper._getDelegate (EntityManagerWrapper.java:162)
в com.sun.enterprise.container.common.impl.EntityManagerWrapper.createNamedQuery (EntityManagerWrapper.java:554)
в pl.zawi.mamba.core.integration.controllers.implementation.FileEntityControlerImpl.retriveFile (FileEntityControlerImpl.java:32)
на pl.zawi.mamba.core.face.servlets.ResourcesServlet.doGet (ResourcesServlet.java:60)
на javax.servlet.http.HttpServlet.service (HttpServlet.java:734)
на javax.servlet.http.HttpServlet.service (HttpServlet.java:847)
в org.apache.catalina.core.StandardWrapper.service (StandardWrapper.java:1523)
в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:279)
в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:188)
в org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:641)
на com.sun.enterprise.web.WebPipeline.invoke (WebPipeline.java:97)
в com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke (PESessionLockingStandardPipeline.java:85)
в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:185)
в org.apache.catalina.connector.CoyoteAdapter.doService (CoyoteAdapter.java:325)
в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:226)
на com.sun.enterprise.v3.services.impl.ContainerMapper.service (ContainerMapper.java:165)
в com.sun.grizzly.http.ProcessorTask.invokeAdapter (ProcessorTask.java:791)
на com.sun.grizzly.http.ProcessorTask.doProcess (ProcessorTask.java:693)
на com.sun.grizzly.http.ProcessorTask.process (ProcessorTask.java:954)
на com.sun.grizzly.http.DefaultProtocolFilter.execute (DefaultProtocolFilter.java:170)
в com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter (DefaultProtocolChain.java:135)
на com.sun.grizzly.DefaultProtocolChain.execute (DefaultProtocolChain.java:102)
на com.sun.grizzly.DefaultProtocolChain.execute (DefaultProtocolChain.java:88)
на com.sun.grizzly.http.HttpProtocolChain.execute (HttpProtocolChain.java:76)
в com.sun.grizzly.ProtocolChainContextTask.doCall (ProtocolChainContextTask.java:53)
на com.sun.grizzly.SelectionKeyContextTask.call (SelectionKeyContextTask.java:57)
на com.sun.grizzly.ContextTask.run (ContextTask.java:69)
на com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork (AbstractThreadPool.java:330)
на com.sun.grizzly.util.AbstractThreadPool $ Worker.run (AbstractThreadPool.java:309)
at java.lang.Thread.run (Thread.java:662)
persistance.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/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_2_0.xsd">
<persistence-unit name="MambaPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/MambaDB</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<shared-cache-mode>ALL</shared-cache-mode>
<properties>
<!-- <property name="javax.persistence.jdbc.password" value="root"/>-->
<!-- <property name="javax.persistence.jdbc.user" value="root"/>-->
<!-- <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>-->
<!-- <property name="eclipselink.ddl-generation" value="create-tables"/>-->
<!-- <property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/>-->
<property name="eclipselink.logging.level" value="ALL"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
</properties>
</persistence-unit>
</persistence>
.. :: UPDATE2 :: ..
Если кто-то заинтересован в моем проекте, я использую maven, поэтому его просто собрать и запустить (диск MySql не включен в pom-s, так что имейте это в виду)1031 * Mamba.Core