EJB开发web service
服務(wù)端的開發(fā)
用EJB就行服務(wù)端開發(fā)是非常簡(jiǎn)單的,EJB可以把無狀態(tài)會(huì)話bean通過@WebService注解瞬間暴露為web服務(wù)。
例子
@Stateless
@Remote(JsunSer.class)
@WebService
public class JsunSerImpl implements JsunSer{
@WebMethod
public String run() {
return "succ";
}
?
public String run2(){
return "error";
}
}
如果不加@WebMethod那么所有的public 方法都會(huì)被暴露為服務(wù),加了就只有run()被暴露為服務(wù)。
發(fā)布EJB,http://localhost:8080/jbossws/services查看發(fā)布的服務(wù)里面有wsdl地址
如圖
http://127.0.0.1:8080/EJB_WebService/JsunSerImpl?wsdl
就是服務(wù)地址,開發(fā)客戶端的時(shí)候會(huì)用到,現(xiàn)在一個(gè)服務(wù)就發(fā)布好了
在wsdl中有三個(gè)元素注意
wsdl的命名空間會(huì)默認(rèn)以 ?http://+項(xiàng)目包名
服務(wù)的接口端點(diǎn)默認(rèn) ?接口名+Bean
服務(wù)的名稱默認(rèn)以 ? ? 實(shí)現(xiàn)類+Service
以上都可以在注解?@WebService 中修改定義
客戶端的開發(fā)
需要JAX-WS幫助我們自動(dòng)生成java文件
http://jax-ws.dev.java.net下載最新的
解壓打開lib目錄將其中的jar文件全部copy到項(xiàng)目的lib目錄下(沒有l(wèi)ib建一個(gè))
再利用ant build.xml文件運(yùn)行
build.xml
<?xml version="1.0"?>?
<project name="client_ws" default="wsclientgen" basedir=".">?
<property name="src.dir" value="${basedir}/src" />?
<path id="build.classpath" description="設(shè)置類路徑">
<fileset dir="${basedir}/lib">
<include name="*"/>
</fileset>
</path>
?
<target name="wsclientgen" description="生成web服務(wù)客戶端">?
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" classpathref="build.classpath"/>
<wsimport?
wsdl="http://127.0.0.1:8080/EJB_WebService/JsunSerImpl?wsdl"?
sourcedestdir="${src.dir}"
?? ? ? ?package="com.jsun"?
keep="true"?
verbose="true"?
destdir="${basedir}/bin"/>
</target>
</project>?
其中keep指如果原來存在舊文件存在是否替換,verbose是否顯示生成細(xì)節(jié),destdir指編譯后class文件存放的目錄
運(yùn)行ant 就會(huì)看到
java文件自動(dòng)生成了
我們?cè)谡{(diào)用時(shí) 如
JsunSer j=new JsunSer();
JsunSerImpl jl=j.getJsunPort();
jl就是我們要使用的對(duì)象
JsunSer是服務(wù)端項(xiàng)目中的接口類的名字
JsunSerImpl是自動(dòng)生成的
?
?
總結(jié)
以上是生活随笔為你收集整理的EJB开发web service的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片计算机基础及应用答案,单片机原理及应
- 下一篇: 38.伪造源站抑制的ICMP数据包