2016-09-12 12 views
0

Uber APIサンプルのJAX-RSサーバーコードをスワッガーで生成しました。私はこのURLにアクセスするとWebsphereでスワッガーで生成されたJAXRSサーバーコードをデプロイする方法

Error 404: javax.servlet.ServletException: java.io.FileNotFoundException: SRVE0190E: File not found: /v1/swagger.json 

http://localhost:9080/swagger-jaxrs-server/v1/swagger.json

私はdidnのそれはhttp://editor.swagger.io/#/

を開くことによって見つけることができますJSONは、今私は、WebSphereでそれを展開しようとしたが、私はメッセージの下を参照してください。デフォルトであります自動生成されたコードを変更しないでください。私はWLP-javaee7-8.5.5.9

使用しています

は、これは私のserver.xmlファイルがどのように見えるかです:

<server description="new server"> 

<!-- Enable features --> 
<featureManager> 
    <feature>javaee-7.0</feature> 
    <feature>localConnector-1.0</feature> 
    <feature>apiDiscovery-1.0</feature> 
</featureManager>  

<basicRegistry id="basic" realm="BasicRealm"> 
    <!-- <user name="yourUserName" password="" /> --> 
</basicRegistry> 

<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" --> 
<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/> 

<!-- Automatically expand WAR files and EAR files --> 
<applicationManager autoExpand="true"/> 

<applicationMonitor updateTrigger="mbean"/> 

<webApplication id="swagger-jaxrs-server" location="swagger-jaxrs-server.war" name="swagger-jaxrs-server"/> 

は、誰かがここに欠けているものを指すことができます。

UPDATE:1

このURLは正常に動作している:http://localhost:8080/swagger-jaxrs-server/swagger.json

enter image description here

だから、私は... 2つのURLの下にしようとしたが、両方が動作しませんでした:これは、JSONの一部です。

http://localhost:8080/swagger-jaxrs-server/estimates/price 
http://localhost:8080/swagger-jaxrs-server/v1/estimates/price 

自動生成されたコードでweb.xmlが表示されません。

答えて

1

このパスは、生成された戦争で@ApplicationPath("/")と重複していますが、jsonファイル(swagger-jaxrs-serverが暗黙のコンテキストルートである)を提供するためにはほぼhttp://localhost:9080/swagger-jaxrs-server/swagger.jsonです。しかし...

問題はコンテキストルートにあります。

swagger.jsonには"basePath" : "/v1"が含まれていますが、v1を含むようにそのベースパスを変更するための生成クラスには何も含まれておらず、サーブレットコンテナはコンテキストルートの割り当て方法が幾分制限されています。

がjsonを取得するために働く@ApplicationPath("/v1")を持つように、生成されたRestApplicationを調整することをお勧めします。http://localhost:9080/swagger-jaxrs-server/v1/productsは、期待されるRESTエンドポイントと一致します。

+0

この@ApplicationPath( "/ v1")はどこに追加する必要がありますか?アプリケーションクラスを拡張しているクラスはありません。私は新しいクラスを作るべきですか?私の質問の更新セクションを見てください。 – javaMan

+1

生成されたコードでは、 "Jaxrs spec"フレーバを使用して生成した場合、src/main/java/io/swagger/api/RestApplication.javaが使用されます。そのコンテナは(JAX-RSジェネレータはJerseyを使用していますが、アプリケーションサーバ間では必ずしもうまく機能しません) – ebullient

+0

私はJAX-RSジェネレータを使用しました。あなたの提案の後、私はJaxrs仕様を使用し、すべてが正常に機能しました。これら2つの発電機の違いは何ですか? – javaMan

関連する問題