當前擁有的環境是:eclipse+tomcat。還需要jaxws-ri.zip裏面的jar。
tomcat導入開發webservice需要的開發包:
(1)jaxws-ri.zip解壓裏面的lib文件夾到tomcat根目錄中的shared文件夾下(沒有就新建一個)
(2)修改apache-tomcat-7.0.42/conf/catalina.properties這個文件。增加shared.loader=後面的內容爲shared.loader=${catalina.home}/shared/lib/*.jar,${catalina.home}/shared/lib 。
編寫項目:
新建一個javaee項目名爲:webService.
weatherService.java文件
package com.matrix.service;
import javax.jws.WebMethod;
import javax.jws.WebService;
import com.matrix.dao.WeatherDao;
import com.matrix.entity.Weather;
@WebService
public class WeatherService {
WeatherDao weatherDao = new WeatherDao();
@WebMethod
public String getName() {
String name = "raise";
return name;
}
}
在客戶端會生成對應的接口,方便調用
javeee的web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>WeatherService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WeatherService</servlet-name>
<url-pattern>/WeatherService</url-pattern>
</servlet-mapping>
</web-app>
會根據地址調用過濾器,調用下面的sun-jaxws.xml
sun-jaxws.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<endpoints
xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint
name="WeatherService"
implementation="com.matrix.service.WeatherService"
url-pattern="/WeatherService" />
</endpoints>
ok,到這裏服務器端已經配置完成。
可以通過http://localhost:80/webService/WeatherService?wsdl來訪問服務器自動生成的wsdl文檔。
下面爲客服端開發
新建一個項目名爲clientWeather
在clientWeather工作空間內新建一個bin文件夾,因爲我們要根據wsdl自動生成客服端代碼需要這個文件夾。
在cmd命令中進入clientWeather文件夾下,輸入以下代碼:
E:\jaxws-ri\bin\wsimport是jaxws-ri.zip包裏面的命令。最後面的是wsdl文檔。
客戶端clientWeather項目中會自動生成代碼包com.xxxxx.service
新建test.java寫測試類:
test.java文件
package com.xxxxxx.test;
import com.matrix.service.Weather;
import com.matrix.service.WeatherServiceService;
public class Test01 {
public static void main(String[] args) {
WeatherServiceService w = new WeatherServiceService();
String result = w.getWeatherServicePort().getName();
Weather weather =w.getWeatherServicePort().getWeatherByCode(54119);
System.out.println(result+"---->"+weather.getTemp());
System.out.println(result);
}
}
已經實現了客戶端訪問服務器。
注意:如果cmd命令解析出錯
可以嘗試將wsdl下載到本地後將<s:element ref="s:schema" /><s:any />改成<s:any minOccurs="2" maxOccurs="2"/>。