<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java隨記

    堅持就是勝利!

     

    j2ee web service開發(五) 把ejb發布為web服務

    ejb 作為 web 服務發布比 JSE 端點要復雜些 . 并且只有無狀態會話 Bean 才能發布成 Web 服務 . 利用 ejb 的一大好處就是容器管理的事務 . 但是 spring 同樣能做到這個 , 這一點不再具有很大的吸引力了 . 那么剩下的好處估計就只有用在必須用 ejb 的情況下又同時需要 web 服務這種情況了 . EJB 端點跟 JSE 端點跟一個不同點在于 : 不需要在 web.xml 文件中配置 servlet 映射 , 但是需要在 ejb-jar.xml 文件中配置 web 服務端點接口 . 另一個不同之處就是不需要一個實現 web 服務接口的具體類 . Jboss 4.04 版本下具體實現 .

    建立一個無狀態會話 bean

    package ejb;

    ?

    import javax.ejb.SessionBean;

    import javax.ejb.SessionContext;

    import javax.ejb.CreateException;

    ?

    public class WebServiceBean implements SessionBean {

    ??? SessionContext sessionContext;

    ??? public void ejbCreate() throws CreateException {

    ??? }

    ?

    ??? public void ejbRemove() {

    ??? }

    ?

    ??? public void ejbActivate() {

    ??? }

    ?

    ??? public void ejbPassivate() {

    ??? }

    ?

    ?

    ??? public void setSessionContext(SessionContext sessionContext) {

    ??????? this.sessionContext = sessionContext;

    ??? }

    ?

    ??? public void hello() {

    ??????? System.out.println("hello");

    ??? }

    }

    ?

    package ejb;

    ?

    import javax.ejb.EJBObject;

    import java.rmi.RemoteException;

    ?

    public interface WebService extends EJBObject {

    ??? public void hello() throws RemoteException;

    }

    ?

    package ejb;

    ?

    import javax.ejb.EJBHome;

    import javax.ejb.CreateException;

    import java.rmi.RemoteException;

    ?

    ?

    public interface WebServiceBeanHome extends EJBHome {

    ? public WebService create() throws CreateException, RemoteException;

    }

    ?

    沒有什么好多說的 .

    定義一個 Web 服務接口


    package ejb;

    ?

    import java.rmi.*;

    ?

    public interface WebServiceTest extends Remote {

    ??? public void hello() throws RemoteException;

    }

    生成 Web 服務所需的配置文件 :

    <?xml version="1.0" encoding="UTF-8"?>

    <!--

    ? wstools -cp? classes -config wstools-config.xml

    -->

    ?

    <configuration xmlns="http://www.jboss.org/jbossws-tools"

    ?? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    ?? xsi:schemaLocation="http://www.jboss.org/jbossws-tools http://www.jboss.org/jbossws-tools/schema/jbossws-tool_1_0.xsd">

    ? <java-wsdl>

    ??? <service name="WebServiceTest" style="rpc" endpoint="ejb.WebServiceTest"/>

    ??? <namespaces target-namespace="http://ejb" type-namespace="http://ejb"/>

    ??? <mapping file="jaxrpc-mapping.xml"/>

    ??? <webservices ejb-link="WebServiceBean"/>

    ? </java-wsdl>

    </configuration>

    ?

    利用 Jboss 自帶的工具生成 Web 服務所需要的布署文件 . wstools -cp? classes -config wstools-config.xml

    把生成的布署文件放到 META-INF 文件夾而不是 JSE 端點的 web-INF 文件夾下 .

    修改 ejb-jar.xml 文件加上 <service-endpoint>ejb.WebServiceTest</service-endpoint> 元素 , 注意順序 .OK 打包發布 .

    客戶端調用程序

    package ejb;

    ?

    import java.net.URL;

    import javax.xml.rpc.*;

    import javax.xml.namespace.QName;

    import javax.naming.*;

    import javax.rmi.PortableRemoteObject;

    import javax.naming.InitialContext;

    import java.util.Hashtable;

    ?

    public class ClientTest {

    ?

    ??? private WebServiceTest getPort() throws Exception {

    ??????? ServiceFactory factory = ServiceFactory.newInstance();

    ??????? URL wsdlURL = new URL("http://hechang:8080/ejb/TestService?wsdl");

    ??????? QName qname = new QName("http://ejb", "WebServiceTest");

    ??????? Service service = factory.createService(wsdlURL, qname);

    ??????? WebServiceTest port = (WebServiceTest) service.getPort(WebServiceTest.class);

    ??????? return port;

    ??? }

    ?

    ??? private WebService ejbTest() throws Exception {

    ??????? Hashtable environment = new Hashtable();

    ?

    ??????? environment.put(Context.INITIAL_CONTEXT_FACTORY,

    ??????????????????????? "org.jnp.interfaces.NamingContextFactory");

    ??????? environment.put(Context.URL_PKG_PREFIXES,

    ??????????????????????? "org.jboss.naming:org.jnp.interfaces");

    ??????? environment.put(Context.PROVIDER_URL, "jnp://localhost:1099");

    ??????? Context context = new InitialContext(environment);

    ??????? Object ref = context.lookup("WebServiceBean");

    ??????? WebServiceBeanHome webServiceHome = (WebServiceBeanHome) PortableRemoteObject.

    ??????????????????????????????????????? narrow(ref, WebServiceBeanHome.class);

    ??????? WebService webService = webServiceHome.create();

    ??????? return webService;

    ??? }

    ?

    ??? public static void main(String[] args) throws Exception {

    ??????? ClientTest clienttest = new ClientTest();

    ??????? WebServiceTest webService = clienttest.getPort();

    ??????? webService.hello();

    ??????? WebService webService2=clienttest.ejbTest();

    ??????? webService2.hello();

    ??? }

    }

    打包?ejb文件下載:EJBModlue.jar

    歡迎加入QQ群:30406099

    posted on 2006-12-04 10:57 傻 瓜 閱讀(3666) 評論(0)  編輯  收藏 所屬分類: j2ee web service

    導航

    統計

    常用鏈接

    留言簿(7)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV无码乱码在线观看性色扶| 亚洲三级视频在线| 免费观看男人免费桶女人视频| 精品免费久久久久国产一区| 亚洲精品精华液一区二区 | 亚洲欧美日韩中文字幕一区二区三区| 亚洲中文字幕无码日韩| 国产公开免费人成视频| 免费观看成人毛片a片2008| 久久青草免费91线频观看不卡| 成人a毛片视频免费看| 亚洲国产精品嫩草影院| 亚洲日本久久久午夜精品| 亚洲视频在线观看一区| 国产亚洲欧洲Aⅴ综合一区| 全部免费a级毛片| 日本无吗免费一二区| 成年大片免费视频| 真人做人试看60分钟免费视频| 亚欧免费无码aⅴ在线观看| 一个人免费视频在线观看www| 男女交性无遮挡免费视频| 久久亚洲AV成人无码国产最大| 在线综合亚洲欧洲综合网站| 亚洲人成免费网站| 亚洲ts人妖网站| 国产日本亚洲一区二区三区| 亚洲综合一区二区| 亚洲成人黄色在线观看| 亚洲乱码中文论理电影| 亚洲自国产拍揄拍| 色偷偷女男人的天堂亚洲网| 亚洲国产情侣一区二区三区| 亚洲无砖砖区免费| 国产亚洲精品成人AA片| 亚洲国产精品无码久久98 | 四虎影库久免费视频| 免费国产在线观看老王影院| 免费人成无码大片在线观看| 免费欧洲毛片A级视频无风险| 无码专区一va亚洲v专区在线 |