2017-10-31 52 views
0

My SpringアプリケーションがWeblogic 11gに問題なくデプロイします。しかし、Weblogic 12cにデプロイしようとすると、私はClassNotFoundExceptionを次々に受け取り続けています。WeblogicでSpringアプリケーションのデプロイが失敗する12c

の最初に、私は行方不明の依存関係を追加することによって解決java.lang.ClassNotFoundException: com.querydsl.core.types.Expressionを取得。それから、私はおなじみの例外を得るが、今度は欠けているクラスはパッケージcom.mysema.querydslから来た。この依存関係を導入した後、私は次の例外を受け取ります:java.lang.ClassNotFoundException: org.apache.abdera.writer.Writer

はなぜアプリケーションが完全に(春がコンテナに結合されるべきではない)は、WebLogic 12cに移行した後に壊れてしまったのですか?ここで

は、移行する前に、プロジェクトのすべての依存関係です:

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <spring.version>4.3.2.RELEASE</spring.version> 
    <spring-data-jpa.version>1.10.2.RELEASE</spring-data-jpa.version> 
    <spring-security.version>4.1.3.RELEASE</spring-security.version> 
    <cxf.version>3.1.7</cxf.version> 
    <jackson.version>1.9.13</jackson.version> 
    <esapi.version>2.1.0.1</esapi.version> 
    <hibernate-entitymanager.version>5.1.1.Final</hibernate-entitymanager.version> 
    <hibernate-commons-annotations.version>5.0.1.Final</hibernate-commons-annotations.version> 
    <spring-boot-starter-jdbc.version>1.5.2.RELEASE</spring-boot-starter-jdbc.version> 
    <slf4j.version>1.7.21</slf4j.version> 
    <log4j.version>1.2.17</log4j.version> 
    <log.directory>logs</log.directory> 
</properties> 

<dependencies> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>3.0-alpha-1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <!-- Security --> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-core</artifactId> 
      <version>${spring-security.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      <version>${spring-security.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
      <version>${spring-security.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-acl</artifactId> 
      <version>${spring-security.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-ldap</artifactId> 
      <version>${spring-security.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.auth0</groupId> 
      <artifactId>java-jwt</artifactId> 
      <version>2.2.0</version> 
     </dependency> 


     <!-- DB --> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>${spring-data-jpa.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-jdbc</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-orm</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${hibernate-entitymanager.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.common</groupId> 
      <artifactId>hibernate-commons-annotations</artifactId> 
      <version>${hibernate-commons-annotations.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <!-- DB end --> 

     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <!-- Oracle JDBC --> 
     <dependency> 
      <groupId>com.oracle</groupId> 
      <artifactId>ojdbc7</artifactId> 
      <version>12.1.0.1.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${slf4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>${slf4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>${log4j.version}</version> 
     </dependency> 
    </dependencies> 
+0

」セクションにdepsのバージョンも追加できますか? – pirho

+0

Btw: ''の代わりに ' servlet-api'がデフォルトで ''になっていますか? – pirho

+0

質問を更新してバージョンを含める –

答えて

0

一般的な問題は、WebLogicがバンドルされた多くのライブラリを持っていることです。アプリケーションがデプロイされると、クラスローダーはWeblogicにバンドルされているものをロードするか、アプリケーションからロードすることができます。

のWebLogic 12cがバンドルされ、追加のライブラリを持っているので、jarファイルが同じライブラリの古いバージョンが含まれているため、例外がスローされる可能性があり、一部のクラス/メソッドは、その瓶に存在しない場合があります。

回避策は、WARファイルをパッケージ化し、優先ライブラリを指定するEARをデプロイすることです。これにより、Weblogicの以前のバージョンの代わりにライブラリがロードされます。あなたは耳のパッケージを使用して新しいMavenのモジュールを作成する必要があり、SRC /アプリケーション/ META-INFの下に置かれる必要があるのweblogic-application.xmlのを含めるEARをデプロイするために

。それはだで、このファイルを含める必要があることを指定する必要があるのpom.xml EARモジュールで

<prefer-application-packages> 
    <package-name>com.querydsl.*</package-name> 
    ... 
</prefer-application-packages> 

ファイルが好またとえばWebLogicのアプリケーションからロードしていないされなければならないパッケージを指定する必要があります耳のプラグインで、以下の情報を提供することにより、:

 <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-ear-plugin</artifactId> 
      <version>2.10.1</version> 
      <configuration> 
       <defaultLibBundleDir>lib</defaultLibBundleDir> 
       <earSourceDirectory>src/application</earSourceDirectory> 
       <modules> 
        <webModule> 
         <groupId>your-group-id</groupId> 
         <artifactId>your-artifact-id</artifactId> 
         <contextRoot>/**yourContext**</contextRoot> 
        </webModule> 
       </modules> 
      </configuration> 
     </plugin> 
    </plugins> 

最後の事、WARモジュールには2つのセクションではsrc /メイン/リソース/の下に作成するweblogic.xmlを持っている必要があります

<context-root>**yourContext**</context-root> 
<container-descriptor> 
    <prefer-web-inf-classes>true</prefer-web-inf-classes> 
</container-descriptor> 

「yourContextは」のmaven-耳のプラグインで提供される同じものと一致する必要があり、アプリケーションのWebコンテキストでなければなりません。

関連する問題