---WEB服務(wù)
使用無(wú)狀態(tài)會(huì)話 將其 發(fā)布為 webService? 下面沒(méi)有配置數(shù)據(jù)源,使用的是模擬數(shù)據(jù)
導(dǎo)入 E:\jboss-6.0.0.Final\client 下的jar
實(shí)體bean
OrderService.java
OrderServiceBean.java
--使用ANT 編譯發(fā)布
-->發(fā)布后 進(jìn)入 jboss 后臺(tái)控制 查看 發(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í)慣呢 就可以通過(guò)上面的
@WebService(targetNamespace="http://ws.sh.cn",//namespace
name="OrderService", //protype name
serviceName="OrderServiceBean"? //Service Name
) 這個(gè)注解中加入屬性配置就 可以了
--- 開(kāi)發(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
1.導(dǎo)入 下載的 jax-ws \lib\*.jar
2.編寫 ant配置文件 生存 輔助類
--Ant? ---build.xml
-->編譯運(yùn)行 (在大綱視圖找那個(gè)? outline中)
//http://localhost:8989/WebService/OrderServiceBean/OrderService?wsdl 為jboss 控制后我們已經(jīng)發(fā)布的 WEBservice 服務(wù)路徑?
就是 點(diǎn)擊
http://localhost:8989/WebService/OrderServiceBean/OrderService 后 瀏覽器中的地址
然后刷新 項(xiàng)目 就可以看到 自動(dòng)生成的? com.sh.ws.client 包 和 類
---然后 test
這樣就可以調(diào)用 webservice 中的方法了
WEB服務(wù)市一種分布式技術(shù),它與EJB最大的不同是,WEB服務(wù)屬于行業(yè)規(guī)范,可以跨平臺(tái)及語(yǔ)言.而EJB屬于java平臺(tái)規(guī)范.理論上可以跨平臺(tái),但是實(shí)現(xiàn)起來(lái)比較復(fù)雜.所以其應(yīng)用范圍局限了java平臺(tái).看上去是競(jìng)爭(zhēng)關(guān)系,其實(shí)不是
WEB服務(wù):偏重這個(gè)系統(tǒng)對(duì)外提供什么功能.
EJB :偏重如何使用這個(gè)組件組裝這些功能.
JavaEE 為web service 提供了兩種不同的編程模型.
EJB容器模型
web容器模型
下面用最新的JAX-WS 2.2.7 (JAVA API for XML-base WEB Service )來(lái)介紹EJB 容器模型的 webservice開(kāi)發(fā)
使用無(wú)狀態(tài)會(huì)話 將其 發(fā)布為 webService? 下面沒(méi)有配置數(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)注后 會(huì)將此方法 暴露給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è)置項(xiàng)目原目錄 -->
<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>
<!-- 講編譯過(guò)后的路徑加入到 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 后臺(tái)控制 查看 發(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í)慣呢 就可以通過(guò)上面的
@WebService(targetNamespace="http://ws.sh.cn",//namespace
name="OrderService", //protype name
serviceName="OrderServiceBean"? //Service Name
) 這個(gè)注解中加入屬性配置就 可以了
--- 開(kāi)發(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
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í)行后請(qǐng)刷新">
<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)行 (在大綱視圖找那個(gè)? outline中)
//http://localhost:8989/WebService/OrderServiceBean/OrderService?wsdl 為jboss 控制后我們已經(jīng)發(fā)布的 WEBservice 服務(wù)路徑?
就是 點(diǎn)擊
http://localhost:8989/WebService/OrderServiceBean/OrderService 后 瀏覽器中的地址
然后刷新 項(xiàng)目 就可以看到 自動(dòng)生成的? 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() {
//通過(guò) 發(fā)布的 服務(wù)對(duì)象bean 和 端口 來(lái)得到 服務(wù)接口類
//和 JAVA中 接口的實(shí)例化 需要 通過(guò)實(shí)現(xiàn)類來(lái) 初始化
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 中的方法了
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

