EJB开发web service
服務端的開發
用EJB就行服務端開發是非常簡單的,EJB可以把無狀態會話bean通過@WebService注解瞬間暴露為web服務。
例子
@Stateless
@Remote(JsunSer.class)
@WebService
public class JsunSerImpl implements JsunSer{
@WebMethod
public String run() {
return "succ";
}
?
public String run2(){
return "error";
}
}
如果不加@WebMethod那么所有的public 方法都會被暴露為服務,加了就只有run()被暴露為服務。
發布EJB,http://localhost:8080/jbossws/services查看發布的服務里面有wsdl地址
如圖
http://127.0.0.1:8080/EJB_WebService/JsunSerImpl?wsdl
就是服務地址,開發客戶端的時候會用到,現在一個服務就發布好了
在wsdl中有三個元素注意
wsdl的命名空間會默認以 ?http://+項目包名
服務的接口端點默認 ?接口名+Bean
服務的名稱默認以 ? ? 實現類+Service
以上都可以在注解?@WebService 中修改定義
客戶端的開發
需要JAX-WS幫助我們自動生成java文件
http://jax-ws.dev.java.net下載最新的
解壓打開lib目錄將其中的jar文件全部copy到項目的lib目錄下(沒有lib建一個)
再利用ant build.xml文件運行
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="設置類路徑">
<fileset dir="${basedir}/lib">
<include name="*"/>
</fileset>
</path>
?
<target name="wsclientgen" description="生成web服務客戶端">?
<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是否顯示生成細節,destdir指編譯后class文件存放的目錄
運行ant 就會看到
java文件自動生成了
我們在調用時 如
JsunSer j=new JsunSer();
JsunSerImpl jl=j.getJsunPort();
jl就是我們要使用的對象
JsunSer是服務端項目中的接口類的名字
JsunSerImpl是自動生成的
?
?
總結
以上是生活随笔為你收集整理的EJB开发web service的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片计算机基础及应用答案,单片机原理及应
- 下一篇: 38.伪造源站抑制的ICMP数据包