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

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

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

Persistence.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

1 Ответ

0 голосов
/ 25 июня 2019

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

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

...