java1234 webservice 第6 課 cfx與spring整合_自定義攔截器_客戶端如

一.只須要在springmvc.xml中添加

<!-- 定義服務提供者 ,也就是定義webservice服務地址! -->
	<!--implementor寫入註冊的bean  address 訪問的地址!  -->
	<jaxws:endpoint implementor="#helloWorld1" address="/HelloWorld">
			<!-- 添加in攔截器 -->
		    <jaxws:inInterceptors>
		         <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
		         <!-- 自定義攔截器 -->
		         <bean class="com.java1234.interceptor.MyInterceptor"/>
		    </jaxws:inInterceptors>
		    <!-- 添加out攔截器 -->
		    <jaxws:outInterceptors>
		         <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
		    </jaxws:outInterceptors>
	 </jaxws:endpoint>

二.訪問服務器:

1.生成文件: 運行命令:F:\apache-cxf-3.1.5\bin\wsdl2java  http://127.0.0.1:8080/WS_Spring_CXF/webservice/HelloWorld?wsdljava

2. 新建maven項目,項目結構以下程序員

pox.xml文件web

<dependencies>  
    	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-core</artifactId>
		<version>3.1.5</version>
	</dependency>

  	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-rt-frontend-jaxws</artifactId>
		<version>3.1.5</version>
	</dependency>
	
	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-rt-transports-http-jetty</artifactId>
		<version>3.1.5</version>
	</dependency>
  </dependencies>

client.java方法spring

package com.java1234.webservice;

import java.util.List;

import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;

import com.java1234.interceptor.AddHeaderInterceptor;
import com.java1234.webservice.impl.HelloWorldImplService;

public class Client {
	
	 public static void main(String[] args) {
		 
		 //這裏web下的服務器和普通main發佈的服務器 生成的文件不一樣
		 HelloWorldImplService service=new HelloWorldImplService();
		 HelloWorld helloWorld=service.getHelloWorldImplPort();
		//調用的類也有區別

		org.apache.cxf.endpoint.Client client= ClientProxy.getClient(helloWorld);
		client.getOutInterceptors().add(new AddHeaderInterceptor("java1234","123456")); // 添加自定義攔截器		
		client.getInInterceptors().add(new LoggingInInterceptor());//添加
		client.getOutInterceptors().add(new LoggingOutInterceptor());
		

		
		/*
		 *數據只能傳輸List<T>,不能傳輸map,因此map的key放入T中,即可以輕鬆傳輸! 
		 */
		MyRoleArray arry = helloWorld.getRoles();
		 List<MyRole>   roleList= arry.item;
		
		 for(int i=0; i<roleList.size();i++){
			 
			 MyRole my=roleList.get(i);
			 System.out.println(my.key+":");
			 for(Role r:my.value){
				 System.out.println(r.getId()+","+r.getRoleName());
			 }
			 System.out.println("========================");
		 }
		 
		
		
		
	}

}

 

運行結果:apache

八月 02, 2016 3:22:08 下午 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
信息: Creating Service {http://impl.webservice.java1234.com/}HelloWorldImplService from WSDL: http://127.0.0.1:8080/WS_Spring_CXF/webservice/HelloWorld?wsdl
八月 02, 2016 3:22:08 下午 org.apache.cxf.services.HelloWorldImplService.HelloWorldImplPort.HelloWorld
信息: Outbound Message
---------------------------
ID: 1
Address: http://127.0.0.1:8080/WS_Spring_CXF/webservice/HelloWorld
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml
Headers: {Accept=[*/*], SOAPAction=[""]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><authHeader><userName>java1234</userName><password>123456</password></authHeader></soap:Header><soap:Body><ns2:getRoles xmlns:ns2="http://webservice.java1234.com/"/></soap:Body></soap:Envelope>
--------------------------------------
八月 02, 2016 3:22:08 下午 org.apache.cxf.services.HelloWorldImplService.HelloWorldImplPort.HelloWorld
信息: Inbound Message
----------------------------
ID: 1
Response-Code: 200
Encoding: UTF-8
Content-Type: text/xml;charset=UTF-8
Headers: {Content-Length=[443], content-type=[text/xml;charset=UTF-8], Date=[Tue, 02 Aug 2016 07:22:08 GMT], Server=[Apache-Coyote/1.1]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:getRolesResponse xmlns:ns2="http://webservice.java1234.com/"><return><item><key>jack</key><value><id>3</id><roleName>程序員</roleName></value></item><item><key>java1234</key><value><id>1</id><roleName>技術總監</roleName></value><value><id>2</id><roleName>架構師</roleName></value></item></return></ns2:getRolesResponse></soap:Body></soap:Envelope>
--------------------------------------
jack:
3,程序員
========================
java1234:
1,技術總監
2,架構師
========================
相關文章
相關標籤/搜索