0

この問題が非常に単純で、私がばかであることを願っています。私はSOAPを初めて使用し、(JavaとSpringを使用して)SOAP Webサービスをセットアップしようとしています。次に、ツールSoapUIを使用して、SOAP要求をWebサービスに送信しようとしています。ただし、リクエストを送信すると、常に404NotFoundエラーが発生します。SoapUIでエンドポイントを間違って設定したのではないかと思いますが、そこにどのような値を設定する必要があるのか​​わかりません。誰か助けてもらえますか?

以下は、SOAPをサポートするWebAppをセットアップするために行った手順です。

1)Spring Tool Suite(Eclipseに基づく)で実行されている既存のWebApp(既存のREST Webサービスを含む)を使用しており、Jettyを使用しています。web.xmlファイルに、新しいSOAPWebサービスを追加しました。

<servlet-mapping>
    <servlet-name>SOAPWebService</servlet-name>
    <url-pattern>/ws/SOAP/*</url-pattern>
</servlet-mapping>
<servlet>
     <servlet-name>SOAPWebService</servlet-name>
     <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
     <init-param>
         <param-name>transformWsdlLocations</param-name>
         <param-value>true</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
</servlet>

2)@Endpointのアノテーションを持つ新しいクラス「ProjectSearchEndpoint」を作成しました。ペイロードルート=@PayloadRoot(namespace = "http://FOO.FOO/foo"、localPart = "ProjectRequest")

3)WebAppのWEB-INFにDSDを追加しました:ws-project.xsd

4)DSDを参照するSOAPWebService-servlet.xmlというサーブレットXMLファイルを作成しました

<bean id="projectSearch" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
  <property name="schema" ref="schema"/>
  <property name="portTypeName" value="ProjectSearch"/>
</bean>

<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema">
    <property name="xsd" value="/WEB-INF/ws-project.xsd"/>
</bean>

注:エンドポイントコードとDSDはブログから取得されます:http: //javaclue.blogspot.co.uk/2012/05/soap-web-service-using-spring-ws-20.html名前空間を編集して作成しました「http://FOO.FOO/foo」ですが、それ以外はコードは同じですが、オブジェクトが構築されたとき(ある)と「searchProjects」メソッドが呼び出されたとき(it)を示すSystem.out行を追加しました。決してありません)。

webAppを正常に起動でき、ブラウザで次のURLに移動できます。

http://localhost:8080/MyApp/ws/SOAP/projectSearch.wsdl 

WSDLを見ることができます。これまでのところすべて良い。

SoapUIを使用するときは、新しいプロジェクトを作成して、WSDLを渡します。SoapUIは幸せそうです。リクエストを要求すると、SoapUIはProjectRequestを含むSoapEnvelopeを作成します。すべてが順調に進んでいます!ただし、このリクエストを送信するには、SoapUIはエンドポイントを必要とします。私のエンドポイントは次のとおりです。

http://localhost:8080/MyApp/ws/SOAP/

しかし、これは見つからない404を返すだけです。次のような他の組み合わせを試す

http://localhost:8080/MyApp/ws/SOAP/projectSearch
http://localhost:8080/MyApp/ws/SOAP/projectSearch?wsdl
http://localhost:8080/MyApp/ws/SOAP/ProjectRequest

結果はすべて404になります。エンドポイントは何ですか?SoapUIにどのような価値を入れるべきですか?

アップデート1

明確にするために、これは私がsoapUIで行っていることです

soapUIを始めて、「新しいsoapUIプロジェクト」を作成します。名前はA1です。初期WSDLは次のとおりです。

http://localhost:8080/MyApp/ws/SOAP/projectSearch.wsdl 

また、ダイアログボックスで[リクエストの作成]にチェックマークが付いています。

[OK]をクリックすると、ProjectSearchSoap11(横に緑色のアイコンが表示されます)が作成され、その下(赤い矢印のアイコン)とその "Request1"(SOAPという単語のアイコン)の下に単一のプロジェクトがあります。Request1を右クリックし、「ShowRequestEditor」を選択します。これにより、SOAPエンベロープと名前空間およびProjectRequestを含むウィンドウが表示されます。これはすべてよさそうだ。

[特定のエンドポイントURLにリクエストを送信](左上の緑色の矢印)をクリックしたいのですが、エンドポイント(右側)を指定するまで、これはグレー表示されます。[エンドポイント]ドロップダウンをクリックして、[現在の編集]を選択します。ダイアログが表示されます。私が入ります:

http://localhost:8080/MyApp/ws/SOAP/ 

[OK]をクリックします。これで、実行アイコンが有効になります(緑色)。このアイコンをクリックすると、「応答」ウィンドウが表示されます。これは空白ですが、生データは次のとおりです。

HTTP/1.1 404 Not Found
Content-Length: 0
Server: Jetty(6.1.26)

私が選択しているエンドポイントが間違っていると推測しています。これが間違った形式であるか、ある種のサフィックスが欠落していることを確認できますか。あなたがそれが正しいと思うなら、それは間違っているのはウェブアプリケーション上の私のセットアップであるに違いありません。

ありがとう、

フィル

4

1 に答える 1

0

soapui testrequest を作成すると、エンドポイント フィールドが入力されます。

少なくともエンドポイントをテストするために、緑色の「I」アイコンの下にある「サンプル リクエスト」を実行することもできます。これらを編集して実際のテストとして使用することはお勧めしませんが、多くの人が SoapUI をそのように使用していると思います。

「リクエストをお願いします」とはどういう意味ですか? 緑の「I」の下の 2 レベルのテスト リクエストを右クリックし、[テストケースに追加] を選択できるはずです。その後、デフォルトを使用できるいくつかのダイアログがあります。テスト スイートとテスト ケースという Junit タイプの構造が作成されます。その下には、単独で、またはスイートまたはテストケースの一部として実行できるテスト ステップがあります。

編集1:

私にはそれは正常に聞こえません。残念ながら、私は簡単なデモ サービスしか書いていませんが...

于 2012-09-18T18:14:50.103 に答える