jersey-clientを使用してRESTサービスを利用しています。要求されたエンティティとLast-Modifiedヘッダーの両方が必要です。
だから私は次のことをします:
ClientResponse response = webResource.get(ClientResponse.class);
Person person = response.getEntity(Person.class);
それはうまくいきます。応答があり、エンティティ(XML)をPOJOにマーシャリングできます。デバッグして応答のヘッダーを調べると、Last-Modifiedヘッダーセットがあることがわかります。
しかし、私が経由して日付を取得しようとすると
response.getLastModified();
URLConnectionClientHandlerのどこかにNPEがあります。
誰かが私が間違っていることの手がかりを持っていますか?
編集:要求に応じてトレース
java.lang.NullPointerException: null
at com.sun.jersey.api.client.ClientResponse.getLastModified(ClientResponse.java:647) ~[jersey-client-1.12.jar:1.12]
at a.o.u.user.dao.impl.uds.PersonenUdsClient.getPerson(PersonenUdsClient.java:103) ~[um-user-2.5.0-Beta1-SNAPSHOT.jar:na]
at a.o.u.user.dao.impl.UserDaoUdsImpl.mergeWithUdsUser(UserDaoUdsImpl.java:282) ~[um-user-2.5.0-Beta1-SNAPSHOT.jar:na]
at a.o.u.user.dao.impl.UserDaoUdsImpl.getUserWithEmail(UserDaoUdsImpl.java:124) ~[um-user-2.5.0-Beta1-SNAPSHOT.jar:na]
at ...
編集: npeが提案したように、私はコードを掘り下げました。私は問題を見つけたと思います。jersey-clientのほかに、クラスパスにcxfもあります。jerseyとcxfはどちらも、 RuntimeDelegateImplというクラスを提供します。ただし、CXFバージョンにはDateHeaderDelegateはありません。RuntimeDelegateImplの間違ったバージョン(CXF)が使用されていると思います。
今のところ、 RuntimeDelegateImplを明示的に使用するように設定する方法がわかりません。