У меня проблема с развертыванием приложения JavaEE на Payara 5.201. Я также использую eclipselink 2.7.6 в качестве постоянной реализации и версию 12.2.0.1 пространственного Java API из oracle, включенного в файл sdoapi.jar. Поскольку я использую maven в качестве системы сборки и этот jar-файл недоступен в mavencentral, я установил его локально, используя следующую команду
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=/path/to/jar/sdoapi.jar -DgroupId=com.oracle -DartifactId=sdoapi -Dversion=12.2.0.1 -Dpackaging=jar
Приложение прекрасно компилируется. Я получаю следующую ошибку при развертывании приложения на сервере:
Исключение Описание: Ошибка развертывания PersistenceUnit [ctrtmapsPU]. Закройте все фабрики для этого модуля. Внутреннее исключение: java .lang.RuntimeException: java .lang.ClassNotFoundException: oracle .spatial.geometry.JGeometry. Пожалуйста, смотрите server.log для более подробной информации
Это файл Java сущности:
@Entity
@Table(name = "POLIGONO_MOVIL", schema = "DESARROLLO")
@StructConverter(name = "JGeometry", converter = "org.eclipse.persistence.platform.database.oracle.converters" +
".JGeometryConverter")
public class PoligonoMovil {
private Long id;
private String codpoli;
private Long unicom;
private String localidad;
private String descpoli;
private String resppoli;
private JGeometry geometry;
@Basic
@Column(name = "ID", nullable = true, precision = 0)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Id
@Column(name = "CODPOLI", nullable = false, length = 15)
public String getCodpoli() {
return codpoli;
}
public void setCodpoli(String codpoli) {
this.codpoli = codpoli;
}
@Basic
@Column(name = "UNICOM", nullable = true, precision = 0)
public Long getUnicom() {
return unicom;
}
public void setUnicom(Long unicom) {
this.unicom = unicom;
}
@Basic
@Column(name = "LOCALIDAD", nullable = true, length = 100)
public String getLocalidad() {
return localidad;
}
public void setLocalidad(String localidad) {
this.localidad = localidad;
}
@Basic
@Column(name = "DESCPOLI", nullable = true, length = 100)
public String getDescpoli() {
return descpoli;
}
public void setDescpoli(String descpoli) {
this.descpoli = descpoli;
}
@Basic
@Column(name = "RESPPOLI", nullable = true, length = 50)
public String getResppoli() {
return resppoli;
}
public void setResppoli(String resppoli) {
this.resppoli = resppoli;
}
@Basic
@Column(name = "GEOMETRY", nullable = true)
@Convert(value = "JGeometry")
public JGeometry getGeometry() {
return geometry;
}
public void setGeometry(JGeometry geometry) {
this.geometry = geometry;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PoligonoMovil that = (PoligonoMovil) o;
return Objects.equals(id, that.id) &&
Objects.equals(codpoli, that.codpoli) &&
Objects.equals(unicom, that.unicom) &&
Objects.equals(localidad, that.localidad) &&
Objects.equals(descpoli, that.descpoli) &&
Objects.equals(resppoli, that.resppoli) &&
Objects.equals(geometry, that.geometry);
}
@Override
public int hashCode() {
return Objects.hash(id, codpoli, unicom, localidad, descpoli, resppoli, geometry);
}
}
Это файл Java класса обслуживания, который запрашивает для указания c Entity:
@Stateless
public class GeoLocationService {
@PersistenceContext(unitName = "ctrtmapsPU")
private EntityManager em;
public List<PoligonoMovil> obtenerGeometria(String codpoli) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<PoligonoMovil> cq = cb.createQuery(PoligonoMovil.class);
Root<PoligonoMovil> root = cq.from(PoligonoMovil.class);
cq.select(root);
cq.where(cb.equal(root.get("codpoli"), codpoli));
TypedQuery<PoligonoMovil> tq = em.createQuery(cq);
return tq.getResultList();
}
}
Вот конфигурация персистентности. xml file:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
version="2.2">
<persistence-unit name="ctrtmapsPU">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/ctrtmaps</jta-data-source>
<class>com.classes.ctrtmaps.domain.PoligonoMovil</class>
<shared-cache-mode>NONE</shared-cache-mode>
<properties>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit> </persistence>
Я пытался поместить sdoapi.jar в другой папки внутри каталога payara: папка lib для domain1, lib / ext, $ PAYARA_HOME / glassfish / modules, $ PAYARA_HOME / glassfish / lib. Я также проверил, что файл JAR правильно скопирован в папку WEB-INF / lib. Но ничего не работает.
Пожалуйста, помогите мне понять, что я делаю неправильно. Заранее большое спасибо за любые ответы.