---WEB服務(wù)
使用無狀態(tài)會話 將其 發(fā)布為 webService? 下面沒有配置數(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 后臺控制 查看 發(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
1.導(dǎo)入 下載的 jax-ws \lib\*.jar
2.編寫 ant配置文件 生存 輔助類
--Ant? ---build.xml
-->編譯運(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
這樣就可以調(diào)用 webservice 中的方法了
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ā)

使用無狀態(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

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 中的方法了
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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