2016-04-14 13 views
0

私はSpring Logicプロジェクト1.3.3リリースをWeb Logic 12c App Serverに導入しました。このコードは組み込みのTomcatではうまく動作しますが、Web Logicにデプロイするときはうまく動作しません。Spring Bootデータ休憩Jakson JSONSerializer empty

私は春データ-残りレポ

@RepositoryRestResource(collectionResourceRel = "car", path = "car") 
public interface CarRepo extends PagingAndSortingRepository<Meter, Long> 
{ 
    List<Car> findall(); 
} 

マイカーPOJO

@Table(name="car") 
@Entity 
public class Car 
{ 
    @Id 
    @Column(name="ID") 
    private Long id; 

    @Column(name="manufacturer") 
    private String manufacturer; 

    ....... 
} 

すべてが起動し、Webページがロードされ、私は残りの呼び出しを行うとき、私から見ることができますをしましたSQLを実行するとSQLクエリが正常に実行されますが、サーバーログに以下のエラーが表示されます。

私は仮定していますデータ・レストはJSON ResponseをエンドポイントからCarオブジェクトに自動的にマップしようとしていますが、何らかの未知の理由で失敗しています。

私は、Spring-Hateoに問題があり、Spring-Data-Restの使用を知っていますが、Springデータの最新バージョンを使用しているようです問題である。

spring-hateoas error

すべてのヘルプは大幅に

答えて

1

[OK]をソリューションは、私は、アプリケーションからではなく、それ自身のコンテナからcom.fasterxml.jacksonパッケージをロードするためにweblogic.xmlの特別のWebLogicを教えていたあるよう。

<wls:package-name>com.fasterxml.jackson.*</wls:package-name> 

全weblogic.xmlの以下:

<?xml version="1.0" encoding="UTF-8"?> 

<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
              http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd 
              http://xmlns.oracle.com/weblogic/weblogic-web-app 
              http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd"> 
    <wls:weblogic-version>12.2.1</wls:weblogic-version> 
    <wls:context-root>/ws/car</wls:context-root> 
    <wls:container-descriptor> 
     <wls:prefer-application-packages> 
      <wls:package-name>org.slf4j.*</wls:package-name> 
      <wls:package-name>javax.persistence.*</wls:package-name> 
      <wls:package-name>org.springframework.*</wls:package-name> 
      <wls:package-name>com.fasterxml.jackson.*</wls:package-name> 
     </wls:prefer-application-packages> 
    </wls:container-descriptor> </wls:weblogic-web-app> 

希望これは他の人に役立ちます。

1

をいただければ幸いこれはJsonSerializerクラスとのバージョンの不一致の問題のように見えます。私はあなたのweblogicクラスローダーは古いバージョンのcom.fasterxml.jackson.coreをロードしていると思う:jackson-databind、クラスJsonSerializerはisEmptyメソッドを持たない。ドキュメントから

/** 
* Method called to check whether given serializable value is 
* considered "empty" value (for purposes of suppressing serialization 
* of empty values). 
*<p> 
* Default implementation will consider only null values to be empty. 
* 
* @since 2.0 
*/ 
public boolean isEmpty(T value) { 
    return (value == null); 
} 
+0

返信いただきありがとうございます。それはmavenプロジェクトなので、どのバージョンをロードするか定義されているので、weblogicがそれをオーバーライドする方法が混乱しています。 – Schokea

+0

私が言っていたことは、Weblogicの内部でのアプリケーションの起動時に、weblogicが上記のクラスの矛盾したバージョンを持っていて、クラスパスからロードしているということです。だからこそあなたのアプリは埋め込みのtomcatでスタンドアロンで動いていたのです – anwarc

+0

これまで遅れて帰ってきて申し訳ありませんが、あなたの答えは正しい結果を得るための長い道のりでした。私はweblogicサーバーに、アプリケーションからcom.fasterxml.jacksonパッケージを使用し、それ自身のものを使用しないように指示しなければなりませんでした。大変ありがとう@anwarc – Schokea