2015-09-07 3 views
0

Я разрабатываю приложение RESTful и хочу развернуть его на сервере TomEE. Все нормально, прежде чем я буду запрашивать сервер, когда он выдает некоторые исключения с помощью root: java.lang.ClassNotFoundException: javax.persistence.StoredProcedureQuery. Я искал в Интернете, но ничего не нашел. Также я не использую hibernateTomEE не находит JPA 2.1 классы

Редактировать: отправка моих конфигураций.

pom.xml:

`<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<artifactId>JobManager-core</artifactId> 

<parent> 
    <groupId>...</groupId> 
    <artifactId>JobManager-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../JobManager-parent/</relativePath> 
</parent> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<dependencies> 
    <dependency> 
     <groupId>com.eclipsesource.jaxrs</groupId> 
     <artifactId>provider-gson</artifactId> 
     <version>2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>18.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>org.eclipse.persistence.jpa</artifactId> 
     <version>2.6.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.derby</groupId> 
     <artifactId>derby</artifactId> 
     <version>10.11.1.1</version> 
    </dependency> 

</dependencies> 

</project>` 

persistence.xml

`<?xml version="1.0" encoding="UTF-8"?> 
    <persistence version="2.1" 
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_1.xsd"> 
<persistence-unit name="JobManager-core" 
    transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <class>com.sap.manager.app.entities.Job</class> 

    <properties> 
     <property name="eclipselink.target-database" value="Derby" /> 
     <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" /> 
     <property name="javax.persistence.jdbc.url" 
      value="jdbc:derby:C:\Users\I322829\Derby\MyDB\Manager;create=true" /> 

     <property name="eclipselink.ddl-generation" value="create-tables" /> 
     <property name="eclipselink.ddl-generation.output-mode" 
      value="database" /> 
    </properties> 
</persistence-unit> 

Edit 2: Я не показал мой pom.xml для RESTful API, потому что он работает с моим файловая система (начинает бросать исключения после переключения на базу данных).

+0

разместите соответствующие настройки. –

+0

, если вы хотите использовать JPA API v2.1, тогда вам нужно поставить эту банку в CLASSPATH. Посмотрите под «org.eclipse.persistence» для чего-то вроде javax.persistence или persistence-api. –

+0

@Neil: OP использует TomEE, а не Tomcat. Более того, «CLASSPATH» применим только для приложений CLI на базе Java SE. OP пытается использовать архив веб-приложений Java EE. – BalusC

ответ

2

TomEE официально поддерживает JavaEE 6, тогда как @StoredProcedureQuery доступен только с JavaEE 7. Если вы хотите использовать эту новую версию API, особенно используя eclipselink, вам необходимо включить eclipselink в приложение WAR. Или вы можете поместить эту eclipselink в установку сервера TomEE, чтобы она была доступна для приложения. Замечание: имейте в виду, что TomEE использует библиотеку OpenJPA для обеспечения функциональности JPA, ваше приложение, похоже, запрашивает eclipselink, поэтому было бы неплохо включить eclipselink либо на сервер приложений, либо в приложение, даже если TomEE поддерживает новейшие JPA.

Смежные вопросы