2016-04-06 10 views
0

私はしばらくの間実行されているアプリを持っています。私はSwaggerを調査することにしました..そして、Libertyのベータ版はSwaggerを統合していることを喜んで発見しました。 apidiscovery-1.0 on Liberty Beta

は、私はそれを試してみることにしました..しかし、私は... ...何も発見し得る

マイ機能するように見えることはできません

<featureManager> 
    <feature>webProfile-7.0</feature> 
    <feature>adminCenter-1.0</feature> 

    <!-- The following features are in beta! --> 
    <feature>bluemixUtility-1.0</feature> 
    <feature>cloudant-1.0</feature> 
    <feature>logstashCollector-1.0</feature> 
    <feature>logmetCollector-1.0</feature> 
    <feature>osgiAppConsole-1.0</feature> 
    <feature>osgiBundle-1.0</feature> 
    <feature>passwordUtilities-1.0</feature> 
    <feature>wsAtomicTransaction-1.2</feature> 
    <feature>apiDiscovery-1.0</feature> 
    <feature>jaxrs-2.0</feature> 
    <feature>jdbc-4.1</feature> 
    <feature>localConnector-1.0</feature> 
</featureManager> 

マイapiDiscovery定義

<apiDiscovery> 

    <webModuleDoc contextRoot="/MYCONTEXTROOT" docURL="/swagger.json" enabled="true"/> 

</apiDiscovery> 

しかし、何も。私は、IBM APIは私のアプリは@Pathを持っているというように...と私は必要なすべてのですthisに応じ

https://localhost:9443/ibm/api/explorer

を訪問して発見されたことを確認しました。そのサイトから

..

製品は@Path、@Api、および @SwaggerDefinition注釈を持つクラスを探して、JAX-RSと 闊歩注釈のためのWebアプリケーション内のすべてのクラスをスキャン。また、製品 は、Webアプリケーション のデプロイメントまたはスタートアップ時に対応するスワッガードキュメントを生成します。

何か不足していますか?

乾杯!

ジェームズ

+0

はまた、我々は今、JAX-RSと闊歩注釈から闊歩定義の自動生成をサポート 新しいリバティのベータ機能 JAX-RS 1.1/2.0と闊歩注釈サポート ...これを試してみました! これは非常に重要な機能です。これは、コード自体からドキュメントが得られる有名なボトムアップ開発をサポートするためです。 apiDiscovery-1.0を有効にして、JAX-RSアプリケーションをdropinsディレクトリ(jaxrs-1.1またはjaxrs-2.0を有効にした状態)にドロップし、APIが/ ibm/api/explorer内にあることを確認してください。 https://developer.ibm .com/wasdev/blog/2016/02/17/exposing-liberty-rest-apis-swagger/ – James

+0

バージョン: defaultServerの起動(WebSphere Application Server 2016.3.0.0/wlp-1.0.12.20160305-0200) – James

答えて

0

問題解決...

は、私がこれをやっていた私が持っていた2つの問題があったようだ。..

@POST @Path("/widget/{name}") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public Response createWidget( @Context HttpServletRequest request, String bodyText) 

{名前}はPathParamとして使用されませんでした。私はそれが一度だったと思う:-)それは2つの場所であった。 これはログに表示されます。ただすぐにはありません。これらは修正され、完全に機能しました。

ジェームズ

0

あなたはJAX-RSのアノテーションを持っている場合は、server.xmlで「webModuleDoc」属性を使用する必要はありません。この属性は、事前生成されたswagger.jsonまたはswagger.yamlファイルがアプリケーション内の別の場所(/swagger.jsonなど)にある場合、またはドキュメント・リポジトリなどのリモートURLの場合に使用されます。

注釈がある場合は、webModuleDocを必要とせずにすべて自動的に行われます。

次のログの仕様は、我々はのaplications毎に生成闊歩文書明らかにする:

<logging traceSpecification="RESTAPIDiscovery=finest"/> 

一般的な用法の誤りが同じjaxrsアプリケーション内の同じ名前を持つ2つの方法を持っているが。 Swaggerモデルによれば、Libertyはメソッド名を操作IDとして使用するため、一意でなければなりません。

+0

ありがとうございますレスポンス...ありがとうございました – James

+0

@ArthurDMは、同じ名前のポリシーを持つ2つのメソッドにJAX-RSリソースに使用される実装されたインターフェイスを含んでいますか? – austinbruch

+1

@austinbruch Libertyの最新バージョン(16004、または最新のベータ版ドライバ)にはそのような制限がなくなり、同じ名前のメソッドを持つことができます。 – ArthurDM

関連する問題