使用Oracle Spatial Java API在Payara服务器上部署JavaEE应用程序

在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文件夹。但是什么都行不通。

请帮助我找出我做错了什么。非常感谢您的任何答复。

aappww 回答:使用Oracle Spatial Java API在Payara服务器上部署JavaEE应用程序

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2674435.html

大家都在问