在Payara 5.201上部署JavaEE应用程序时遇到问题。我还将eclipselink 2.7.6用作持久性实现,并将sdoapi.jar文件中包含的Oracle的空间Java API版本12.2.0.1包含在内。由于我将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] 失败了关闭此PersistenceUnit的所有工厂。内部 异常: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",precision = 0)
public Long getUnicom() {
return unicom;
}
public void setUnicom(Long unicom) {
this.unicom = unicom;
}
@Basic
@Column(name = "LOCALIDAD",length = 100)
public String getLocalidad() {
return localidad;
}
public void setLocalidad(String localidad) {
this.localidad = localidad;
}
@Basic
@Column(name = "DESCPOLI",length = 100)
public String getDescpoli() {
return descpoli;
}
public void setDescpoli(String descpoli) {
this.descpoli = descpoli;
}
@Basic
@Column(name = "RESPPOLI",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文件:
@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();
}
}
这是persistence.xml文件的配置:
<?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目录内的其他文件夹中:domain1的lib文件夹,lib / ext,$ PAYARA_HOME / glassfish / modules,$ PAYARA_HOME / glassfish / lib。我还验证了jar文件也已正确复制到WEB-INF / lib文件夹。但是什么都行不通。
请帮助我找出我做错了什么。非常感谢您的任何答复。