亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

EJB3.0學(xué)習(xí)總結(jié)(二)--EJB3.0容器模型的WEB服務(wù)

系統(tǒng) 1661 0

JAX-WS

  JAX-WS規(guī)范是一組XML web services的JAVA API。JAX-WS允許開發(fā)者可以選擇RPC-oriented或者message-oriented 來實(shí)現(xiàn)自己的web services。
  在 JAX-WS中,一個遠(yuǎn)程調(diào)用可以轉(zhuǎn)換為一個基于XML的協(xié)議例如SOAP。在使用JAX-WS過程中,開發(fā)者不需要編寫任何生成和處理SOAP消息的代碼。JAX-WS的運(yùn)行時實(shí)現(xiàn)會將這些API的調(diào)用轉(zhuǎn)換成為對于SOAP消息。
  在服務(wù)器端,用戶只需要通過Java語言定義遠(yuǎn)程調(diào)用所需要實(shí)現(xiàn)的接口SEI (service endpoint interface),并提供相關(guān)的實(shí)現(xiàn),通過調(diào)用JAX-WS的服務(wù)發(fā)布接口就可以將其發(fā)布為WebService接口。
  在客戶端,用戶可以通過JAX-WS的API創(chuàng)建一個代理(用本地對象來替代遠(yuǎn)程的服務(wù))來實(shí)現(xiàn)對于遠(yuǎn)程服務(wù)器端的調(diào)用。
  通過web service所提供的互操作環(huán)境,我們可以用JAX-WS輕松實(shí)現(xiàn)JAVA平臺與其他編程環(huán)境(.net等)的互操作。
  JAX-WS與JAX-RPC之間的關(guān)系
  Sun最開始的web services的實(shí)現(xiàn)是JAX-RPC 1.1 (JSR 101)。這個實(shí)現(xiàn)是基于Java的RPC,并不完全支持schema規(guī)范,同時沒有對Binding和Parsing定義標(biāo)準(zhǔn)的實(shí)現(xiàn)。
  JAX-WS2.0 (JSR 224)是Sun新的web services協(xié)議棧,是一個完全基于標(biāo)準(zhǔn)的實(shí)現(xiàn)。在binding層,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing層,使用的是the Streaming API for XML (StAX, JSR 173),同時它還完全支持schema規(guī)范。

?

?

目的:使用ejb3 的 @WebService ? 注解開發(fā)一個webservice服務(wù)端,然后使用JAX-WS 技術(shù)完成客戶端代碼的生成和調(diào)用

?

webservice 服務(wù)器端的開發(fā):

?

?

EJB3.0學(xué)習(xí)總結(jié)(二)--EJB3.0容器模型的WEB服務(wù)

?

?

?

? 步驟1: 寫一個webservice 需要傳輸?shù)膶ο?

?

    package cn.itcast.bean;

import java.io.Serializable;

public class Order implements Serializable{
	private static final long serialVersionUID = -5898452101455689209L;
	
	private String id;
	private String name;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

  

?

??

步驟2: 定義webservice服務(wù)器端需要暴漏的方法接口

?

    package cn.itcast.service;

import java.util.List;

import cn.itcast.bean.Order;

public interface OrderService {
	public String getUserName(String name);
	public Order getOrder(String orderid);
	public List<Order> getOrders();
}

  

?

?

?

? 步驟3: 定義暴漏方法的實(shí)現(xiàn)

?

?

    package cn.itcast.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jws.WebService;

import cn.itcast.bean.Order;
import cn.itcast.service.OrderService;


/*使用這個注解,就可以這個會話bean中的方法暴漏成webservice方法  
 * 如果你只想暴漏其中的某些方法,你可以再想對外暴漏的方法上  
 * 加上@WebMethod 注解,那么沒有這個注解的方法就不會暴漏  
 * 成webservice方法了   
 * targetNamespace 命名空間 也就是wsdl中的 targetNamespace  
 * name 端點(diǎn)接口的名稱 也就是wsdl中的portType name  
 * serviceName 服務(wù)的名稱  
 * 不修改上面的3個屬性也沒關(guān)系,就是你發(fā)布的wsdl的可讀性差  
 * */ 
@WebService(targetNamespace="http://ws.itcast.cn",name="OrderService",
		serviceName="OrderServiceBean")
@Stateless
@Remote(OrderService.class)
public class OrderServiceBean implements OrderService {

	public Order getOrder(String orderid) {
		Order order = new Order();
		order.setId(orderid);
		order.setName("小鴨子");
		return order;
	}

	public List<Order> getOrders() {
		List<Order> orders = new ArrayList<Order>();
		
		Order order1 = new Order();
		order1.setId("001");
		order1.setName("小一");
		
		Order order2 = new Order();
		order2.setId("002");
		order2.setName("小二");
		
		orders.add(order1);
		orders.add(order2);
		return orders;
	}

	public String getUserName(String name) {
		return name;
	}

}

  

?

?

?

?步驟4: ant 打包(build.xml,項目根目錄下)?

?

    <?xml version="1.0" encoding="UTF-8"?>
<!--.表示同一目錄 ..表示在上一目錄-->

<project name="WebService" basedir=".">  
   <property name="src.dir" value="${basedir}\src"/>
   <property environment="env"/>
   <property name="jboss.home" value="${env.JBOSS_HOME}"/>
   <property name="jboss.server.config" value="default"/>
   <property name="build.dir" value="${basedir}\build"/>
    
    <path id="build.classpath">
        <fileset dir="${jboss.home}\client">
            <include name="*.jar"/>
         </fileset>
    	<pathelement location="${build.dir}"/>
    </path>


    <target name="prepare" >
       <delete dir="${build.dir}"/>
       <mkdir dir="${build.dir}"/>
    </target>


    <target name="compile" depends="prepare" description="編譯">
    <javac srcdir="${src.dir}" destdir="${build.dir}">
       <classpath refid="build.classpath"/>
    </javac>
    </target>
  

    <target name="ejbjar" depends="compile" description="創(chuàng)建ejb發(fā)布包">
       <jar jarfile="${basedir}\${ant.project.name}.jar">
           <fileset dir="${build.dir}">
            <include name="**/*.class"/>
            </fileset>

        <!--把persistence.xml打包到META-INF目錄下-->

       	<!--<metainf dir="${src.dir}\META-INF"></metainf>-->
       </jar>
    </target>

    <target name="deploy" depends="ejbjar" description="ejb發(fā)布">
       <copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"/>
    </target>
                                                                                                                                                                               
    <target name="undeploy" description="卸載ejb">
       <delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"/>
    </target>
</project>


  

?

?

?

?

步驟5:驗證輸入 http://localhost:8080/jbossws/ ? ?找到 View a list of deployed services ? 點(diǎn)擊可以看到你發(fā)的webservice的wsdl文件

?

webservice 客戶端的開發(fā):

EJB3.0學(xué)習(xí)總結(jié)(二)--EJB3.0容器模型的WEB服務(wù)

?

?

步驟1: 建立一個空的項目,從 https://jax-ws.dev.java.net/2.1.7/ ?下載 jax-ws,使用? java -jar JAXWS2.1.7-20090419.jar,解壓縮后會有l(wèi)ib ,講lib下的 jar包加到classpath下 ?

?

步驟2:使用ant 從服務(wù)器的wsdl 生成本地調(diào)用框架

?

?

    <?xml version="1.0" encoding="UTF-8"?>
<project name = "WSClient"  default="wsclient" basedir =".">  
<property name = "src.dir" value = "${basedir}/src"/>  
<path id="build.classpath" description="設(shè)置類路徑">  
  <fileset dir="${basedir}/lib">  
   <include name="*.jar"></include>  
  </fileset>  
 </path>  
  
<target name = "wsclient" description ="生成webservice客戶端代碼">  
    <taskdef name = "wsimport" classname ="com.sun.tools.ws.ant.WsImport" classpathref="build.classpath"/>  
    <wsimport wsdl="http://127.0.0.1:8080/WebService/OrderServiceBean?wsdl"  
    sourcedestdir="${src.dir}" package="cn.com.xinli.ws.client" keep="true"  
    verbose ="true" destdir="${basedir}/bin"/>  
    </target>    
</project> 
  

?

?

?

?

步驟3:使用junit4 寫單元測試

?

?

    package junit.test;


import java.util.List;

import org.junit.BeforeClass;
import org.junit.Test;

import cn.com.xinli.ws.client.Order;
import cn.com.xinli.ws.client.OrderService;
import cn.com.xinli.ws.client.OrderServiceBean;

public class WSTest {
	private static OrderService orderService;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		OrderServiceBean orderServiceBean = new OrderServiceBean();
		orderService =orderServiceBean.getOrderServicePort();
	}

	@Test
	public void getUserName(){
		System.out.println(orderService.getUserName("小明"));
	}
	
	@Test
	public void getOrder(){
		Order order = orderService.getOrder("999");
		System.out.println(order.getId());
		System.out.println(order.getName());
	}
	
	@Test
	public void getOrders(){
		List<Order> orders = orderService.getOrders();
		for(Order order : orders)
			System.out.println(order.getId()+","+order.getName());
	}
}

  

??

?

?

驗證: 保證服務(wù)器的wsdl 能正確訪問,調(diào)用單元測試就好了。

?

?

?

EJB3.0學(xué)習(xí)總結(jié)(二)--EJB3.0容器模型的WEB服務(wù)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久久久爽亚洲精品 | 久久久久网站 | 中文字幕日韩在线一区国内 | 人成午夜免费大片在线观看 | 欧美日韩国产成人高清视频 | 一级特黄特黄毛片欧美的 | 久久99深爱久久99精品 | 日本老乱video | 久久黄色免费视频 | 99热久久这里只有精品7 | 另类重口性色老妇 | 国内精品视频一区二区三区八戒 | 桃花福利视频在线观看 | 亚洲日本欧美在线 | 成人精品mv视频在线观看 | 久草日韩 | 天天色天天综合网 | 久久精品国内偷自一区 | 国产成人精品s8sp视频 | 国产亚洲精品一区999 | 第一国内永久免费福利视频 | 日韩爱爱网站 | 男人的天堂一区二区视频在线观看 | 国产成人精品午夜免费 | 久久一级视频 | 久久黄色小视频 | 亚洲人成亚洲精品 | 综合久久国产对白 | 亚洲人成一区二区不卡 | 毛片爱做的片 | 亚洲图欧美色综合图 | 五月天婷婷在线免费观看 | 欧美激情特级黄aa毛片 | 91精品国产自产91精品 | 香蕉视频一区二区三区 | 久久伊人在 | 97在线视频免费观看费观看 | 免费国产高清精品一区在线 | 国产区1| 欧美综合色另类图片区 | 亚洲精品一区二区三区www |