2013-04-30 30 views
2

我有一個JAX-WS Web服務打包在EAR中,部署到WebSphere v7。 耳包含:
- APP-INF目錄:classes目錄(的.class在正確的包層次文件)加上必須的jar的lib目錄
- META-INF目錄
- 空WEB-INF戰爭和META-INF迪爾斯和一個HelloWorld的index.html
使用SOAP UI在WebSphere v7上調用JAX-WS Web服務

我有兩個類:

@WebService 
public interface Service {} 

和:

@WebService 
public class ServiceImpl implements Service { 
    @WebMethod 
    public String test(String who) { 
     return("Hello " + who + "!"); 
    } 
} 

(lib dir中的jar是商業邏輯所必需的,我只是用一個簡單的hello + who替換了邏輯)。

我已經在WAS v7中部署了EAR,現在我想使用SOAP UI對其進行測試。我已經在部署期間設置了上下文根:
/服務

我在哪裏可以找到生成的WSDL,它的地址/端點是什麼?

我完全不熟悉這個,WAS v7上有用的JAX-WS完整的教程鏈接也可以。我找不到任何東西,儘管我現在一直在Google上搜索幾個小時...

回答

2

當您沒有直接定義時,默認情況下,JAX-WS運行時將後綴Service添加到實現該服務的類,儘管這不是所有運行時的規則。如果你想獲得部署的WSDL,嘗試

http://localhost:9080/service/ServiceImplService?wsdl 

或者

http://localhost:9080/service/ServiceImplService/ServiceImplService.wsdl 

如果你想改變格局URL

@WebService(serviceName = "EchoService") 
public class ServiceImpl implements Service { 
    @WebMethod 
    public String test(String who) { 
     return ("Hello " + who + "!"); 
    } 
} 

嘗試

http://localhost:9080/service/EchoService?wsdl 

查看更多在IBM Redbook - Application Server V7.0. Web Services Guide

UPDATE

如果要部署的EAR在WAS,其基本結構是:

TestEAR.ear 
| TestWeb.war 
| 
\---META-INF 
     MANIFEST.MF 

結構WAR文件到這個EAR是:

TestWeb.war 
+---META-INF 
|  MANIFEST.MF 
| 
\---WEB-INF 
    | ibm-web-bnd.xml 
    | ibm-web-ext.xml 
    | web.xml 
    | 
    +---classes 
    | \---org 
    |  \---paulvargas 
    |   \---test 
    |    | Service.class 
    |    | ServiceImpl.class 
    |    | 
    |    \---jaxws 
    |      Test.class 
    |      TestResponse.class 
    | 
    \---lib 

文件ibm-web-xxx.xml是本示例的可選項。所述MANIFEST.MF只有:

Manifest-Version: 1.0 
Class-Path: 

的文件Test.classTestResponse.class(用於operaration在WSDL文檔文件test)由wsgen工具產生,具有相似的命令:

wsgen -cp . org.paulvargas.test.ServiceImpl 

web.xml包含:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <display-name>TestWeb</display-name> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>index.htm</welcome-file> 
     <welcome-file>index.jsp</welcome-file> 
     <welcome-file>default.html</welcome-file> 
     <welcome-file>default.htm</welcome-file> 
     <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

wsdlLocation這就是:

http://localhost:9080/TestWeb/ServiceImplService/ServiceImplService.wsdl 

查看更多:

+0

我仍然不能得到的WSDL。 – Kumite 2013-05-01 17:32:32

+0

感謝您的回答,但我仍然無法獲得wsdl。我的web應用程序在那裏,它顯示了我在瀏覽器中輸入以ctxroot結尾的url時的歡迎index.html內容。我的耳朵包含:帶有清單和戰爭的元信息。戰爭包含:meta-inf(+ manifest),index.html和WEB-INF。 WEB-INF具有帶有歡迎文件的web.xml。 – Kumite 2013-05-01 17:46:04

+0

在戰爭的網絡目錄下有classes目錄。在類中:wsdl和xsd,均由websphere v7的wsGen工具生成:[link](http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm .websphere.express.doc%2Finfo%2Fexp%2Fae%2Ftwbs_devwbsjaxws_step4.html)以及java包的目錄,所以它應該是。在帶註釋的Service類的包中,有一個帶有.class的jaxws目錄,也是由wsgen工具生成的。這些類與我的webservice的方法(Test.class)具有相同的名稱,還有響應類,它們很複雜。 – Kumite 2013-05-01 17:49:17