DropwizardはジャージーコンポーネントA
を登録します。このコンポーネントを私のカスタムバージョンに置き換えたいと思います。出来ますか?ドキュメントからジャージーコンポーネントの登録を解除することはできますか?
答えて
:
https://jersey.java.net/documentation/latest/message-body-workers.html#providers-selection
これが意味:
を使用すると、カスタムプロバイダを持っている場合は、カスタムプロバイダが使用されます。例によって
:
は、私は、ユーザーのクラスを持っていると言う:
public class User {
@JsonProperty("name")
private String name;
@JsonProperty("password")
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我々はユーザーを返すリソースがあります。
@Path("/hello/world2")
@Produces(MediaType.APPLICATION_JSON)
public class MsgBodyWriterTest {
@GET
@Path("/v1")
@Produces(MediaType.APPLICATION_JSON)
public User test() {
User u = new User();
u.setName("Test");
return u;
}
}
をそして、我々は、このユーザーを扱うMessageBodyWriterを持っていますオブジェクト:
@Provider
public class UserMsgBodyWriter implements MessageBodyWriter<User> {
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
return type == User.class;
}
@Override
public long getSize(User t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeTo(User t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType,
MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
throws IOException, WebApplicationException {
System.out.println("Use custom Provider");
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(entityStream, t);
}
}
我々は、リソースとプロバイダを登録することで、メインで一緒に物事をフック:
public class Starter extends Application<Configuration> {
@Override
public void run(Configuration configuration, Environment environment) throws Exception {
environment.jersey().register(MsgBodyWriterTest.class);
environment.jersey().register(UserMsgBodyWriter.class);
}
public static void main(String[] args) throws Exception {
new Starter().run("server", "/Users/artur/dev/repo/dw-test/src/main/resources/configuration.yaml");
}
}
始めたとき、それはジャージのリソースを公開し、我々はそれにアクセスすることができます。
arturk:~ artur$ curl -XGET "localhost:9085/hello/world2/v1"
この
Use custom Provider
0:0:0:0:0:0:0:1 - - [02/Jun/2016:09:21:31 +0000] "GET /hello/world2/v1 HTTP/1.1" 200 31 "-" "curl/7.43.0" 30
「カスタムプロバイダを使用する」という出力に注意してください。これは、適切なプロバイダが呼び出されたことを示すだけです。
私はこれがあなたの探していることを望みます。
要するに、フックされるデフォルトのプロバイダはJaxbから提供されます。すべてのjson型を扱い、デフォルトのbeanを直列化することができます。それがなければ、あなたのjsonは解析する方法を知らないでしょう。あなたはそれを取り除きたくないが、むしろそれを取り除く。 独自のプロバイダを作成することで、選択したものが適切なものを選ぶことになります。デフォルトでは、jerseyはデフォルトプロバイダの前にカスタムプロバイダをソートします。したがって、isWriteable()メソッドが正しく実装されている限り、プロバイダはその作業を行うように選択されます。
編集:
実際の質問にお答えください。あなたがDW登録されたプロバイダを取り除かなければならない場合は、その方法もあります。デフォルトのサーバーファクトリを上書きする必要があります。次をご覧ください:
AbstractServerFactory#createAppServlet。これは、デフォルトのプロバイダがフックインされている場所です。あなた自身で登録するだけで、デフォルトは決して使用されません。サーバーファクトリを作成する作業を省くことができます(これはかなり簡単で簡単ですあなたはしたい)。
乾杯、
のArtur
- 1. BROADCAST RECEIVERを登録し、それを別のアクティビティで登録解除することはできますか? - Android
- 2. 登録解除
- 3. Simplenewsで別のカテゴリの登録を解除すると一般カテゴリのユーザーを登録解除する
- 4. WindowsセットアッププロジェクトでDLLを登録および登録解除する
- 5. ブロードキャストレシーバーの登録を解除できるとき
- 6. なぜObservable.interval()は登録を解除できませんか?
- 7. Asteriskの登録/登録解除をMySQLに保存する
- 8. 登録解除キャラクタデバイス
- 9. 登録解除BroadcastReceiver
- 10. は、登録解除C2DM
- 11. Asp.Netのクライアントスクリプトを登録解除する
- 12. Java:Closeable.close()のリスナーを登録解除する
- 13. Chart.jsのプラグインを登録解除する
- 14. イベントハンドラを登録/登録解除する一般的な方法
- 15. 登録解除後にユーザーをMailChimpリストに登録する
- 16. TCL fileeventで登録されたコールバックの登録を解除するには?
- 17. ノックアウトで登録された機能の登録を解除するには?
- 18. ES6 angularjsコントローラクラスのsetInterval()の登録と登録解除
- 19. イベントバスの登録とアプリケーションクラスの登録解除
- 20. Subject.complete()はすべてのリスナーを登録解除しますか?
- 21. どのようにして登録を解除するリスナーを見つけることができますか?
- 22. Facebook登録プラグイン:登録ライフサイクル管理(登録解除)
- 23. 角度 - イベントからの登録解除ができません
- 24. アクセスできないVirtualBoxの登録を解除するバッチファイル
- 25. イベントハンドラの登録を解除しないと悪いですか?
- 26. Outlookの登録解除アプリ
- 27. Angular2:ホストリスナーの登録解除
- 28. Angularjs - ウォッチャーの登録解除
- 29. 'RegisterWindowMessage'を使用して登録されたメッセージは登録解除できますか?
- 30. WSO2 EMM - iOSデバイスから登録解除できません
ジャージ成分が何でありますか? – wero
それは 'features'と呼ばれるかもしれません - ' MessageBodyReader's、 'Filter'sなど –
あなたが話している特定のコンポーネントはありますか? –