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

EJB容器模型的WebService服務(wù)

系統(tǒng) 1544 0
---WEB服務(wù)
    
WEB服務(wù)市一種分布式技術(shù),它與EJB最大的不同是,WEB服務(wù)屬于行業(yè)規(guī)范,可以跨平臺及語言.而EJB屬于java平臺規(guī)范.理論上可以跨平臺,但是實(shí)現(xiàn)起來比較復(fù)雜.所以其應(yīng)用范圍局限了java平臺.看上去是競爭關(guān)系,其實(shí)不是

WEB服務(wù):偏重這個系統(tǒng)對外提供什么功能.
EJB :偏重如何使用這個組件組裝這些功能.

JavaEE 為web service 提供了兩種不同的編程模型.
EJB容器模型 
web容器模型 

下面用最新的JAX-WS 2.2.7 (JAVA  API for XML-base WEB Service )來介紹EJB 容器模型的 webservice開發(fā)

  


EJB容器模型的WebService服務(wù)

使用無狀態(tài)會話 將其 發(fā)布為 webService? 下面沒有配置數(shù)據(jù)源,使用的是模擬數(shù)據(jù)
導(dǎo)入 E:\jboss-6.0.0.Final\client 下的jar

實(shí)體bean
    
package com.sh.bean;

import java.io.Serializable;

public class Order implements Serializable{
	
	private static final long serialVersionUID = 7401607038300453322L;
	
	private String orderid;
	private String name;
	
	public String getOrderid() {
		return orderid;
	}
	public void setOrderid(String orderid) {
		this.orderid = orderid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}	
}

  


OrderService.java
    
package com.sh.service;

import java.util.List;

import com.sh.bean.Order;

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

  

OrderServiceBean.java
    
package com.sh.service.impl;

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

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

import com.sh.bean.Order;
import com.sh.service.OrderService;

//發(fā)布為 webservice 服務(wù)
@WebService(targetNamespace="http://ws.sh.cn",//namespace
		name="OrderService", //protype name
		serviceName="OrderServiceBean"  //Service Name
		)
@Stateless
@Remote(OrderService.class)
public class OrderServiceBean implements OrderService {
	
	//@WebMethod  //標(biāo)注后 會將此方法 暴露給webservice
	
	@Override
	public String getUserName(String name) {
		// TODO Auto-generated method stub
		return name;
	}

	@Override
	public Order getOrder(String orderid) {
		Order order =new Order();
		order.setOrderid(orderid);
		order.setName("小燕子");
		return order;
	}

	@Override
	public List<Order> getOrders() {
		// TODO Auto-generated method stub
		List<Order> person=new ArrayList<Order>();
		Order order1 =new Order();
		order1.setOrderid("001");
		order1.setName("小2");
		
		Order order2 =new Order();
		order2.setOrderid("002");
		order2.setName("小3");
		
		person.add(order1);
		person.add(order2);
		return person;
	}

}

  


--使用ANT 編譯發(fā)布
    
<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== 
     2013-2-25 下午1:53:33                                                        

     project    
     description
                   
     Bin                                                                
     ====================================================================== -->
<project name="WebService" basedir=".">
    <description> 
            description
    </description>
	<!-- 設(shè)置項目原目錄 -->
	<property name="src.dir" value="${basedir}\src" />
	<!-- 獲取環(huán)境變量 -->
	<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"/>
    
	<!-- 引入 jboss client 下的 所有jar -->
	<path id="build.classpath">
		<fileset dir="${jboss.home}\client">
			<include name="*.jar"/>
		</fileset>
		<!-- 講編譯過后的路徑加入到 path中去 方便   接口和實(shí)現(xiàn)的引用 -->
		<pathelement location="${build.dir}"/>
	</path>
	
	
    <target name="prepare" description="創(chuàng)建build目錄">
		<delete dir="${build.dir}"/>
    	<mkdir dir="${build.dir}"/>
    </target>

    <!-- - - - - - - - - - - - - - - - - - 
          target: compile                      
         - - - - - - - - - - - - - - - - - -->
    <target name="compile" depends="prepare" description="編譯">
    	<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" includes="com/**">
    		<classpath refid="build.classpath"/>
    	</javac>
    </target>
	
	<!-- ================================= 
          target: ejbjar              
         ================================= -->
    <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>
        </jar>
    </target>

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

</project>


  


-->發(fā)布后 進(jìn)入 jboss 后臺控制 查看 發(fā)布的服務(wù)
http://localhost:8989/jbossws? --> View a list of deployed services
-->點(diǎn)擊 Endpoint Address http://localhost:8989/WebService/OrderServiceBean/OrderService

進(jìn)入后我們可以看到
targetNamespace="http://ws.sh.cn" //命名空間
<wsdl:service name="OrderServiceBean">? //服務(wù)名稱 def: //OrderServiceBeanService
<wsdl:portType name="OrderService">? //端口名稱?? def: OrderServiceBean

如果后面 def(默認(rèn)命名) 看不的不是很習(xí)慣呢 就可以通過上面的
@WebService(targetNamespace="http://ws.sh.cn",//namespace
name="OrderService", //protype name
serviceName="OrderServiceBean"? //Service Name
) 這個注解中加入屬性配置就 可以了


--- 開發(fā)ws客戶端應(yīng)用
--準(zhǔn)備jar 和jdk 的版本
如果使用的JDK 中使用JAX_WS 版本? 低于 我們引用的jax_ws 的jar 需要在
JDK_HOME/jre/lib/endorsed(新建) \ 加入? jaxws-api.jar? 和 jaxb-api.jar?
如果使用myeclipse 就需要修改myclipse 使用的JDK 為系統(tǒng)中安裝的JDK

2.使用web-service客戶端工具生成輔助類 (Ant配置生成)

3.借助輔助類 調(diào)用? web service


EJB容器模型的WebService服務(wù)

1.導(dǎo)入 下載的 jax-ws \lib\*.jar
2.編寫 ant配置文件 生存 輔助類
--Ant? ---build.xml
    
<?xml version="1.0" encoding="UTF-8"?>
<project name="WSClient" default="wsclientgen" basedir=".">
	<property name="src.dir" value="${basedir}/src"/>
	<path id="build.classpath" description="設(shè)置類路徑">
		<fileset dir="${basedir}/lib">
			<include name="*.jar"/>
		</fileset>
	</path>
	
	<target name="wsclientgen" description="生成webservice客戶端,執(zhí)行后請刷新">
		<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" classpathref="build.classpath"/>
		<wsimport wsdl="http://localhost:8989/WebService/OrderServiceBean/OrderService?wsdl"
			sourcedestdir="${src.dir}" package="com.sh.ws.client" keep="true"
			verbose="true" destdir="${basedir}/bin" xendorsed="true"/>
	</target>
</project>


  


-->編譯運(yùn)行 (在大綱視圖找那個? outline中)
//http://localhost:8989/WebService/OrderServiceBean/OrderService?wsdl 為jboss 控制后我們已經(jīng)發(fā)布的 WEBservice 服務(wù)路徑?
就是 點(diǎn)擊
http://localhost:8989/WebService/OrderServiceBean/OrderService 后 瀏覽器中的地址

然后刷新 項目 就可以看到 自動生成的? com.sh.ws.client 包 和 類

---然后 test
    
package junit.test;

import java.util.List;

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

import com.sh.ws.client.Order;
import com.sh.ws.client.OrderService;
import com.sh.ws.client.OrderServiceBean;

public class WSTest {
	@Test
	public void getUserName() {
		//通過 發(fā)布的  服務(wù)對象bean 和 端口 來得到   服務(wù)接口類  
		//和  JAVA中 接口的實(shí)例化 需要 通過實(shí)現(xiàn)類來 初始化  
		OrderServiceBean serice=new OrderServiceBean();
		//接口 
		OrderService orderService=serice.getOrderServicePort();
		//調(diào)用方法
		System.out.println(orderService.getUserName("西游降魔"));
	}
	
	@Test
	public void getOrder() {
		OrderServiceBean serice=new OrderServiceBean();
		OrderService orderService=serice.getOrderServicePort();
		Order order =orderService.getOrder("999");
		System.out.println(order.getOrderid()+"\\"+order.getName());
	}
	
	@Test
	public void getOrders() {
		OrderServiceBean serice=new OrderServiceBean();
		OrderService orderService=serice.getOrderServicePort();
		List<Order> orders=orderService.getOrders();
		for (Order order2 : orders) {
			System.out.println(order2.getOrderid()+"\\"+order2.getName());
		}
		
	}
	
	

}


  



這樣就可以調(diào)用 webservice 中的方法了

EJB容器模型的WebService服務(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條評論
主站蜘蛛池模板: 欧美一级性视频 | 四虎 影院ww9584h | 欧美成人a视频 | 日韩一级视频免费观看 | 在线播放性xxx欧美 在线播放亚洲 | 巨乳毛片| 在线观看视频一区 | 国产目拍亚洲精品一区二区三区 | 久久久香蕉视频 | 国产日韩欧美在线观看免费视频 | 久久色网 | 日本一级毛片 | 久草欧美视频 | 国产大片91精品免费观看不卡 | 久青草视频97国内免费影视 | 成人小视频免费在线观看 | 九天玄帝诀免费完整观看 | 9966久久精品免费看国产 | 国产成人亚洲欧美三区综合 | 国产精品久久久久久 | 国产欧美日韩在线播放 | 91麻豆精品国产91久久久久 | 日韩免费福利视频 | 亚洲第一区在线 | 欧美精品一区二区三区久久 | 中文精品久久久久国产网址 | 日本免费一二三区 | 中文字幕一区久久久久 | 在线播放亚洲精品富二代91 | 日本人一级毛片免费视频 | 高清国产美女一级a毛片录 高清国产美女一级毛片 | 国产精品久久久免费视频 | 久久午夜网 | 97久久精品人人澡人人爽 | 国产大学生一级毛片绿象 | 九九精品成人免费国产片 | 亚洲尹人 | 亚洲欧美另类精品久久久 | 久久精彩免费视频 | 国产成年网站v片在线观看 国产成人 免费观看 | 一本大道香蕉高清久久 |