質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

Q&A

解決済

1回答

1706閲覧

JAX-RS2.0 で返却したJSONObjectから生成されるJSONが空になってしまう

sweetfish

総合スコア24

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

0グッド

0クリップ

投稿2020/12/25 05:15

前提・実現したいこと

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に含まれているライブラリを使用している認識です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

JSONObject型を返却していましたが、toStringによって、String型で返却するように修正しました。

投稿2021/01/31 08:38

sweetfish

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問