WebService是提供特定服務的架構技術,經過標準的Web協議提供服務,其目的是保證不一樣平臺的應用服務能夠相互操做。目前比較流行的實現是使用.NET和JAVA兩種語言技術,而且兩種實現語言能夠相互操做;java
下面主要圍繞經過JAVA語言來介紹Webservice的定義和調用,經過JAVA語言開發WebService的方式又分爲Axis、axis二、Xfire、CXF以及JWS。每種方式實現都有各自的特色,因爲本人使用CXF的方式比較熟練,並且,CFX和Spring無縫結合,因此下面重點介紹以CXF方式的實現。web
因爲WebService實現分爲服務端和客戶端兩種開發模式,接下來介紹WebService服務端開發、客戶端開發及實例測試。spring
JDK1.6及以上,須要的JAR文件有:commons-logging-1.1.1.jar、cxf-2.4.3.jar、neethi-3.0.1.jar、spring-aop-3.0.5.RELEASE.jar、spring-asm-3.0.5.RELEASE.jar、spring-beans-3.0.5.RELEASE.jar、spring-context-3.0.5.RELEASE.jar、spring-context-support-3.0.5.RELEASE.jar、spring-core-3.0.5.RELEASE.jar、spring-expression-3.0.5.RELEASE.jar、spring-web-3.0.5.RELEASE.jar、wsdl4j-1.6.2.jar、xmlschema-core-2.0.1.jar。express
1.服務端開發apache
自定義接口類瀏覽器
package cn.test.ws.service;架構
import javax.jws.WebParam;app
import javax.jws.WebService;ide
@WebService工具
public interface GreetingService {
public String welcome(@WebParam(name="username") String username);
public int getNum(@WebParam(name="number") int number);
}
定義接口實現類
package cn.test.ws.service.impl;
import cn.test.ws.service.GreetingService;
public class GreetingServiceImpl implements GreetingService {
@Override
public String welcome(String username) {
System.out.println("服務端的方法爲:greeting()");
return "Hell0 "+username+",歡迎你調用JAVA下的WebService服務!";
}
@Override
public int getNum(int number) {
System.out.println("服務端的方法爲:getNum()");
return number;
}
}
Spring.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:server id="GreetingService"
serviceClass="cn.test.ws.service.GreetingService"
address="/GreetingService">
<jaxws:serviceBean>
<bean class="cn.test.ws.service.impl.GreetingServiceImpl" />
</jaxws:serviceBean>
<jaxws:features>
<bean class="org.apache.cxf.feature.LoggingFeature" />
</jaxws:features>
</jaxws:server>
</beans>
2. web.xml配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<display-name>CXF Servlet</display-name>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
3.客戶端開發
public static void main(String[] args) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
String wsUrl = "http://127.0.0.1:8080/WS/GreetingService?wsdl";
String method ="welcome";
String method2 = "getNum";
try {
Client client = dcf.createClient(wsUrl);
Object[] objects =client.invoke(method,"TEST");
Object[] numbers =client.invoke(method2,6);
System.out.println(objects[0].toString());
System.out.println(numbers[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
4.實例測試
WebService測試能夠使用上述客戶端main方法進行測試,也可經過在瀏覽器中進行測試,還有專門的webservice測試工具等衆多方式進行測試。
在瀏覽器中輸入http://IP:端口/項目名稱/GreetingService?wsdl便可看到已發佈的服務端信息,而且經過輸入制定參數顯示服務端返回的信息,如:http://IP:端口/項目名稱/GreetingService/welcome?username=test。