前提・実現したいこと
WebLogic11g(10.3.6)からWebLogic12cへのバージョンアップに伴い、既存のREST APIをJAX-RS1.1から2.0に変更て動かしたい。
発生している問題・エラーメッセージ
タイトルのとおり、JSONObjectから生成されているJSONが空で呼び元に返却されてしまいます。
返却されるJSON:{}
該当のソースコード
Oracleのサイトを参照し、web.xmlの<servlet>を以下のように修正しました。
https://docs.oracle.com/cd/E57014_01/wls/RESTF/deploy-restful-service.htm#CACHBGDH
(変更前web.xml)※パッケージ名は仮
xml
1 <servlet> 2 <servlet-name>jersey-serlvet</servlet-name> 3 <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 4 <init-param> 5 <param-name>com.sun.jersey.config.property.packages</param-name> 6 <param-value>jp.co.hoge.api</param-value> 7 </init-param> 8 <init-param> 9 <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 10 <param-value>true</param-value> 11 </init-param> 12 <load-on-startup>1</load-on-startup> 13 </servlet>
(変更後web.xml)
xml
1 <servlet> 2 <servlet-name>jersey-serlvet</servlet-name> 3 <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 4 <init-param> 5 <param-name>jersey.config.server.provider.packages</param-name> 6 <param-value>jp.co.tcc.ecs.e_asproRest.api,jp.co.tcc.ecs.e_asproRest.api.map</param-value> 7 </init-param> 8 <init-param> 9 <param-name>jersey.config.server.provider.scanning.recursive</param-name> 10 <param-value>false</param-value> 11 </init-param> 12 <load-on-startup>1</load-on-startup> 13 </servlet>
JSONObjectを返却しているソース ※一部抜粋
java
1 @GET 2 @Path("/properties/{id}/{kbn}") 3 @Produces(MediaType.APPLICATION_JSON) 4 public JSONObject getProperties(@PathParam("id") String id, 5 @PathParam("kbn") String kbn){ 6 JSONObject json = new JSONObject(); 7 try { 8 (DBから値を取得) 9 // URL 10 json.put("searchUrl", result.get("KANRI_DATA")); 11 // コード 12 json.put("kbnCd", Sresult.get("KBN_CD")); 13 } catch(Exception e){ 14 //ロールバックする 15 } finally { 16 // クローズする 17 } 18 return json; 19 }
※Javaソースの修正は行っておりません。
※デバックにて、returnされるjsonオブジェクトには、値が設定されていることを確認しています。
試したこと
web.xmlのservletに以下の定義を追加してみましたが、解決できませんでした(現象変わらず)。
xml
1<init-param> 2 <param-name>jersey.config.server.provider.classnames</param-name> 3 <param-value>org.glassfish.jersey.moxy.json.MoxyFeature</param-value> 4</init-param>
以下の定義を追加した場合は、サービス起動時にエラーとなりました。
xml
1<init-param> 2 <param-name>jersey.config.server.provider.classnames</param-name> 3 <param-value>org.glassfish.jersey.jackson.JacksonFeature</param-value> 4</init-param>
HTTPステータス:400
No serializer found for class org.codehaus.jettison.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
補足情報(FW/ツールのバージョンなど)
アプリケーションサーバー:Oracle WebLogic 12.2.1.4(開発モード)
eclipseのWTPから起動して動作確認を行っています。
Javaビルドパスに追加したライブラリ(jarファイル)
・jersey-media-multipart-2.17.jar
・mimepull-1.9.3.jar
上記以外は、WeebLogicに含まれているライブラリを使用している認識です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。