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

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

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

    java隨記

    堅持就是勝利!

     

    j2ee web service開發(fā)(五) 把ejb發(fā)布為web服務(wù)

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

    建立一個無狀態(tài)會話 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 服務(wù)接口


    package ejb;

    ?

    import java.rmi.*;

    ?

    public interface WebServiceTest extends Remote {

    ??? public void hello() throws RemoteException;

    }

    生成 Web 服務(wù)所需的配置文件 :

    <?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 服務(wù)所需要的布署文件 . wstools -cp? classes -config wstools-config.xml

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

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

    客戶端調(diào)用程序

    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 傻 瓜 閱讀(3656) 評論(0)  編輯  收藏 所屬分類: j2ee web service

    導航

    統(tǒng)計

    常用鏈接

    留言簿(7)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产AV无码专区亚洲AVJULIA| 免费A级毛片无码A| 亚洲伦另类中文字幕| 日本道免费精品一区二区| 精品国产亚洲一区二区在线观看| 亚洲成av人片在www鸭子| 日本高清免费中文字幕不卡| 亚洲色偷偷色噜噜狠狠99网| 四虎影视永久免费观看网址| 2022久久国产精品免费热麻豆| 久久精品国产亚洲av四虎| 久久爰www免费人成| 国产性爱在线观看亚洲黄色一级片| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 久久国产精品免费网站| 久久国产亚洲高清观看| 国产精品怡红院永久免费| 国产高潮久久免费观看| 亚洲人成电影网站| 亚洲中文字幕第一页在线| 成人看的午夜免费毛片| 久久狠狠躁免费观看| 曰批全过程免费视频观看免费软件| 亚洲国产第一页www| 亚洲天堂在线视频| 毛片a级毛片免费播放100| 久久er国产精品免费观看2| 男男gvh肉在线观看免费| 亚洲人成7777影视在线观看| 亚洲真人无码永久在线| 日本不卡视频免费| 性短视频在线观看免费不卡流畅| 中国黄色免费网站| 丰满亚洲大尺度无码无码专线| 亚洲色图黄色小说| 亚洲日韩欧洲无码av夜夜摸| 免费在线观看你懂的| 免费看的成人yellow视频| 97在线观看永久免费视频| 久久99精品视免费看| 任你躁在线精品免费|