日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
J2EEwebservice開發(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

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

沒有什么好多說的 .

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

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

生成 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 端點的 web-INF 文件夾下 .

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

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

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

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


分享標(biāo)題:J2EEwebservice開發(fā)(五)把ejb發(fā)布為web服務(wù)
分享鏈接:http://www.dlmjj.cn/article/djpoepc.html