webservice之jax-ws實現方式


1.什么是webservice?

webservice是一種遠程資源調用技術,它的實現方式主要分為兩種,第一種是jaxws方式,它是面向方法的,它的數據類型是xml是基於soap實現傳輸;第二種是jaxrs方式,它是面向資源的,它的數據類型是xml或json是基於http協議實現傳輸。

2.jaxws簡單應用

  服務端:

第一步:創建一個簡單的web項目,略

  

第二步:添加webService的依賴jar包,配置web.xml

      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.0.1</version>
    </dependency>
<servlet>
   <servlet-name>CXFService</servlet-name>
   <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
   <servlet-name>CXFService</servlet-name>
   <url-pattern>/services/*</url-pattern>
</servlet-mapping>     

第三步:編寫代碼

//接口定義
@WebService
public interface ServiceUI {
	@WebMethod
	String sayHello(String name);
	@WebMethod
	List<Car> fingCarsByUser(User user);
}
//接口實現
@WebService(endpointInterface="cn.linc.cxf.interfaces.ServiceUI",serviceName="userService")
public class ServiceUIImpl implements ServiceUI {
	public String sayHello(String name) {
		return "hello  "+name ;
	}
	public List<Car> fingCarsByUser(User user) {
		if ("xiaoming".equals(user.getUsername())) {
			List<Car> cars = new ArrayList<Car>();
			Car car1 = new Car();
			car1.setId(1);
			car1.setCarName("大眾");
			car1.setPrice(200000d);
			cars.add(car1);

			Car car2 = new Car();
			car2.setId(2);
			car2.setCarName("現代");
			car2.setPrice(170000d);
			cars.add(car2);

			return cars;
		} else {
			return null;
		}
	}
}

 第四步:啟動項目,查看wsdl說明書

 這里面的路徑注意cxf在web中的配置:{在配置tomcat時注意項目名的配置,我這里沒有配置}

參數說明:

@WebService:在接口上申明,表示該接口是一個webService服務;
@WebMethod:在接口方法上聲明,表示該方法是一個webService服務方法;

@WebService(endpointInterface="cn.linc.cxf.interfaces.ServiceUI",serviceName="userService"):在該接口實現類定義;

endpointInterface:表示接口服務終端接口名;
serviceName:服務名稱;
wsdl解讀:有五個節點:服務視圖,服務協議和參數的描述,服務實現,參數描述,參數類型描述。

客戶端:

第一步:根據生成的wsdl文檔生成客戶端代碼,並放置在一個新建的客戶端項目中;

生成命令:
wsimport -s '存放路徑' 'wsdl路徑'

第二步:配置webService的客戶端

<jaxws:client id="serviceUi" address="http://127.0.0.1:8080/cxf-jax-ws-spring-server/services/serviceUi?wsdl" serviceClass="cn.linc.cxf.interfaces.ServiceUI">
	</jaxws:client>

第三步:編寫測試類

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class TestDemo {
	@Autowired
	public ServiceUI serviceUi;

	@Test
	public void demo(){
		String  s = serviceUi.sayHello("凱迪拉克");
		System.out.println(s);
	}

} 
效果展示:

 

原理解析:
  可以分為三個角色:服務提供者,服務消費者,服務注冊中心uddi
  首先由服務提供者發布服務並且在注冊中心uddi進行注冊
  然后由服務消費者訂閱服務,在注冊中心uddi上查詢到符合條件的服務
  服務注冊中心返回服務條件服務的描述文件給服務訂閱者
  訂閱者根據描述文件進行服務端的服務調用,並返回數據。


 


 


免責聲明!

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



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