当前拥有的环境是: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"/>。