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