JAVA調用WebService實例


WebService是提供特定服務的架構技術,通過標准的Web協議提供服務,其目的是保證不同平台的應用服務可以相互操作。目前比較流行的實現是使用.NETJAVA兩種語言技術,並且兩種實現語言可以相互操作;

下面主要圍繞通過JAVA語言來介紹Webservice定義和調用,通過JAVA語言開發WebService的方式又分為Axis、axis2、XfireCXF以及JWS。每種方式實現都有各自的特點,由於本人使用CXF方式比較熟練,而且,CFXSpring無縫結合,所以下面重點介紹以CXF方式的實現。

由於WebService實現分為服務端和客戶端兩種開發模式,接下來介紹WebService服務端開發、客戶端開發及實例測試。

  1. 環境准備

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。

 

1.服務端開發

自定義接口類

 package cn.test.ws.service;

 import javax.jws.WebParam;

 import javax.jws.WebService;

 @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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM