Приложение JPA 2.1, требующее перезагрузки управляемого сервера при повторном развертывании в WebLogic 12.2.1

При использовании JPA 2.1 в нашем текущем приложении мы сталкиваемся с внутренней ошибкой сервера 500 при отправке запроса веб-службы. Проблема решается, и JPA работает правильно только после перезагрузки управляемого сервера приложения. Я использую eclipselink в качестве поставщика JPA, поскольку это то, что предоставляется на сервере. Мое текущее развертывание распаковывает файл уха и развертывает развернутый файл, который содержит META-INF (application.xml, MANIFEST.MF, weblogic-application.xml) и файл войны, который содержит классы и файл persistence.xml. В настоящее время я выполняю развертывание с помощью муравьиного сценария wldeploy с повторным развертыванием в качестве действия.

JPA работает только после первоначального развертывания или отказа управляемого сервера, если я должен был повторно развернуть.

Может ли это быть проблемой с моим развертыванием или структурой, или файлами EAR и WAR, или это может быть проблема с реализацией JPA?

Я включил аннотацию @RequestScoped в класс веб-службы.

Я включил файл beans.xml в свою веб-папку со следующей строкой:

bean-discovery-mode="annotated">

Моя веб-папка содержит следующее:

web/WEB-INF/classes/persistence.xml
web/beans.xml
web/web.xml
web/weblogic.xml

Постоянство.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
    <persistence-unit name="DB" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/PublicAPI</jta-data-source>
    </persistence-unit>
</persistence>

Beans.xml

 <?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                  http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
    bean-discovery-mode="annotated">
 </beans>

weblogic.xml

 <?xml version='1.0' encoding='UTF-8'?>
 <weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web- 
 app"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app 
 http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">
<context-root>/PublicAPI/</context-root>

WebService

@ApplicationPath("")
@Path("inventory/")
@Api(value = "Engineering Public API")
@RequestScoped
public class SsmcResource {
    @Inject
    private SsmcListProcedure ssmcListProcedure;

    @POST
    @Path("GetSSMCList")
    @Produces(MediaType.APPLICATION_JSON)
    public SsmcResponse getSSMCList(SsmcRequest ssmcRequest)
    {
        SsmcResponse response = null;
        response = new SsmcResponse();
        SsmcList ssmc = ssmcRequest.getSsmc();
        CallerStatus callerStatus = ssmcRequest.getCallerStatus();
        InitializeCallerStatus(callerStatus);
        response.setSsmc(ssmcListProcedure.getSSMCList(ssmc.getSeries(), ssmc.getStyle(), ssmc.getMaterial(), ssmc.getColor()));
        return response;
    }
}

Класс JPA:

@Dependent
@Default
public class SsmcListProcedure implements SsmcDAO {

@PersistenceContext(unitName = "DB")
private EntityManager em;

@Override
public List<SsmcList> getSSMCList(String seriesInd, String styleInd, String materialInd, String colorInd)
{
    Query q = em.createNamedStoredProcedureQuery("SsmcList");
    q.setParameter("p_series_ind", seriesInd);
    q.setParameter("p_style_ind", styleInd);
    q.setParameter("p_material_ind", materialInd);
    q.setParameter("p_color_ind", colorInd);
    return (List<SsmcList>) q.getResultList();

}
}

После повторного развертывания я получаю в логах следующие ошибки при отправке POST-запроса:

WARNING: Unknown HK2 failure detected:
MultiException stack 1 of 3
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl

person smarino    schedule 21.06.2019    source источник


Ответы (1)


Это похоже на ошибку, для которой уже есть патч. (JAX-RS + CDI).

проверьте в поддержке оракула.

person devwebcl    schedule 25.06.2019