webService的學習基礎

當前擁有的環境是: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"/>。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章