自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開發(fā) 后端
本文講述了J2EE web service開發(fā)中如何將ejb發(fā)布為web服務(wù)。利用 ejb 的一大好處就是容器管理的事務(wù),再就是在必須用 ejb 的情況下又同時(shí)需要 web 服務(wù)這種情況。

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

建立一個無狀態(tài)會話 bean

  1. package ejb;   
  2.  
  3. import javax.ejb.SessionBean;   
  4. import javax.ejb.SessionContext;   
  5. import javax.ejb.CreateException;   
  6. public class WebServiceBean implements SessionBean {   
  7.     SessionContext sessionContext;   
  8.     public void ejbCreate() throws CreateException {   
  9.     }   
  10.     public void ejbRemove() {   
  11.     }   
  12.     public void ejbActivate() {   
  13.     }   
  14.     public void ejbPassivate() {   
  15.     }   
  16.  
  17.     public void setSessionContext(SessionContext sessionContext) {   
  18.         this.sessionContext = sessionContext;   
  19.     }   
  20.  
  21.     public void hello() {   
  22.         System.out.println("hello");   
  23.     }   
  24. }   
  25.  
  26.  
  27. package ejb;   
  28.  
  29. import javax.ejb.EJBObject;   
  30. import java.rmi.RemoteException;   
  31.  
  32. public interface WebService extends EJBObject {   
  33.     public void hello() throws RemoteException;   
  34. }   
  35.  
  36. package ejb;   
  37.  
  38. import javax.ejb.EJBHome;   
  39. import javax.ejb.CreateException;   
  40. import java.rmi.RemoteException;   
  41.  
  42. public interface WebServiceBeanHome extends EJBHome {   
  43.   public WebService create() throws CreateException, RemoteException;   
  44. }   

沒有什么好多說的 .

定義一個 Web 服務(wù)接口

  1. package ejb;   
  2.  
  3. import java.rmi.*;   
  4. public interface WebServiceTest extends Remote {   
  5.     public void hello() throws RemoteException;   
  6. }   

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

  1. < configuration xmlns="http://www.jboss.org/jbossws-tools"   
  2.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  3.    xsi:schemaLocation="http://www.jboss.org/jbossws-tools http://www.jboss.org/jbossws-tools/schema/jbossws-tool_1_0.xsd">   
  4.   < java-wsdl>   
  5.     < service name="WebServiceTest" style="rpc" endpoint="ejb.WebServiceTest"/>   
  6.     < namespaces target-namespace="http://ejb" type-namespace="http://ejb"/>   
  7.     < mapping file="jaxrpc-mapping.xml"/>   
  8.     < webservices ejb-link="WebServiceBean"/>   
  9.   < /java-wsdl>   
  10. < /configuration>   

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

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

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

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

  1. package ejb;   
  2.  
  3. import java.net.URL;   
  4. import javax.xml.rpc.*;   
  5. import javax.xml.namespace.QName;   
  6. import javax.naming.*;   
  7. import javax.rmi.PortableRemoteObject;   
  8. import javax.naming.InitialContext;   
  9. import java.util.Hashtable;   
  10.  
  11. public class ClientTest {   
  12.  
  13.     private WebServiceTest getPort() throws Exception {   
  14.         ServiceFactory factory = ServiceFactory.newInstance();   
  15.         URL wsdlURL = new URL("http://hechang:8080/ejb/TestService?wsdl");   
  16.         QName qname = new QName("http://ejb""WebServiceTest");   
  17.         Service service = factory.createService(wsdlURL, qname);   
  18.         WebServiceTest port = (WebServiceTest) service.getPort(WebServiceTest.class);   
  19.         return port;   
  20.     }   
  21.  
  22.     private WebService ejbTest() throws Exception {   
  23.         Hashtable environment = new Hashtable();   
  24.         environment.put(Context.INITIAL_CONTEXT_FACTORY,   
  25.                         "org.jnp.interfaces.NamingContextFactory");   
  26.         environment.put(Context.URL_PKG_PREFIXES,   
  27.                         "org.jboss.naming:org.jnp.interfaces");   
  28.         environment.put(Context.PROVIDER_URL, "jnp://localhost:1099");   
  29.         Context context = new InitialContext(environment);   
  30.         Object ref = context.lookup("WebServiceBean");   
  31.         WebServiceBeanHome webServiceHome = (WebServiceBeanHome) PortableRemoteObject.   
  32.                                         narrow(ref, WebServiceBeanHome.class);   
  33.         WebService webService = webServiceHome.create();   
  34.         return webService;   
  35.     }   
  36.  
  37.     public static void main(String[] args) throws Exception {   
  38.         ClientTest clienttest = new ClientTest();   
  39.         WebServiceTest webService = clienttest.getPort();   
  40.         webService.hello();   
  41.         WebService webService2=clienttest.ejbTest();   
  42.         webService2.hello();   
  43.     }   
  44. }   

以上介紹了J2EE web service開發(fā)中將ejb發(fā)布為web服務(wù)的方法。

【編輯推薦】

  1. j2ee web service開發(fā)(三)SAAJ帶附件的soap消息
  2. j2ee web service開發(fā)(二)動態(tài)代理與動態(tài)調(diào)用
  3. j2ee web service開發(fā)(一) 映射數(shù)組復(fù)雜類型
  4. J2ee學(xué)習(xí)經(jīng)驗(yàn)和流程
  5. j2ee web service開發(fā)(四)soap報(bào)頭與處理
責(zé)任編輯:book05 來源: csdn
相關(guān)推薦

2009-06-22 11:50:00

J2EE Web應(yīng)用快速開發(fā)

2009-06-22 10:59:00

J2EE web se

2009-06-22 10:09:00

J2EE web se

2009-06-22 09:48:00

J2EE web se

2009-06-22 09:56:00

J2EE web se

2009-06-22 10:04:00

J2EE web se

2009-06-12 08:54:22

EJB術(shù)語J2EE

2009-06-18 16:13:14

J2EE開發(fā)

2012-02-21 09:48:10

JavaJ2EE

2009-06-23 08:06:46

J2EE體系架構(gòu)J2EE模型J2EE設(shè)計(jì)模式

2009-06-10 14:10:23

J2EE學(xué)習(xí)J2EE是什么

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護(hù)

2012-03-21 09:13:35

JavaJRebel

2012-06-17 13:24:00

JRebelJ2EEJava

2009-06-22 17:09:00

J2EE項(xiàng)目開發(fā)流程

2009-06-23 16:48:26

J2EE常見問題J2EE平臺

2011-04-07 13:05:23

DBSight搜索關(guān)系型數(shù)據(jù)庫

2012-01-17 10:22:07

JavaJ2EEJBoss

2011-06-01 11:08:08

J2EE
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號