熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

在JBoss4.2及JBoss5.0上部署jax-ws 2.0/2.1 Web

2013-11-23 20:31:51  來源: Java開源技術 

  最近試著將POJO web service打包成war部署到JBoss上(同樣的war部署在Glassfish上運行良好)下面是小結

  一部署jaxws / POJO Web Service到JBossGA

  必須為你的POJO Web Service定義一個Servlet並定義service的endpoint
        這意味著必須修改/增加兩個文件WEBINF/webxmlWEBINF/sunjaxwsxml (附文後)

  最好將所需的jaxws jars放到WENINF/lib裡免得將這些jar拷貝來拷貝去
       本人曾試了半天拷來拷去反正是搞不定最後還是一古腦兒索性全放到WEBINF/lib裡倒是爽快:

   WEBINF/lib/jaxwsrtjar
WEBINF/lib/jaxwstoolsjar
WEBINF/lib/logjjar
WEBINF/lib/saajapijar
WEBINF/lib/saajimpljar
WEBINF/lib/sjsxpjar
WEBINF/lib/staxexjar
WEBINF/lib/streambufferjar
WEBINF/lib/sxalanjar

  別問我到底哪個是哪個都是干什麼的

  二部署jaxws / POJO Web Service到JBossGA

  好像是去年JBoss面世了根據其Release Note它是the final release of the JBoss  series for the Java EE&#; codebase that fully complies with the Java EE  conformance testing certification requirements但本人的試驗結果卻是大失所望如果將我們的web service打包成war部署到JBoss 根本就不工作問題多去了為什麼同樣的war部署在Glassfish上就運行良好呢?果真是fully complies with the Java EE  ?看起來並不那麼fully

  JBossGA的server classloader搜尋路徑發生了一點變化根據其Release Note的指示:When running under Java  you need to manually copy the following libraries from the JBOSS_HOME/client directory to the JBOSS_HOME/lib/endorsed directory so that the JAXWS  apis supported by JBossWS are used: 

   jbosswsnativesaajjar 
jbosswsnativejaxrpcjar 
jbosswsnativejaxwsjar 
jbosswsnativejaxwsextjar 

  這個也無濟於事

  最終還得像部署在JBossGA上一樣進行部署

  總結
        1將jaxws / POJO web service部署得到JBoss/是一樣費勁的
        2基本上需要兩步一是要定義WEBINF/webxml 和 WEBINF/sunjaxwsxml二是要將所需的相關的 ws libs 放到war的本地classpath上
        3還發現一個怪現象@WebService attribute 是否附值與附哪些值JBoss與 Glassfish所由此產生的wsdl內容很不相同這有點兒頭痛

  Why JBoss then? 答案是我兒子的口頭禅我也不知道!

  附上相關文件

  {code}

    service interface: VodOptService 

package comvodwsserviceopt;

import javaxjwsWebMethod;
import javaxjwsWebParam;
import javaxjwsWebResult;
import javaxjwsWebService;
import javaxjwssoapSOAPBinding;
import comvodwsserviceGetPersonRequest;
import comvodwsserviceGetPersonResponse;

@WebService
@SOAPBinding(
     style = SOAPBindingStyleDOCUMENT
     use = SOAPBindingUseLITERAL
     parameterStyle=SOAPBindingParameterStyleBARE
)
public interface VodOptService {
  
  @WebMethod
  @WebResult( name=getPersonResponse
              targetNamespace=
              partName=getPersonResponse )
  public GetPersonResponse getPerson( @WebParam(name=getPersonRequest 
                                                targetNamespace= 
                                                partName=getPersonRequest )
                                      GetPersonRequest request);
}

 service implementation: VodOptServiceImp 

  package comvodwsserviceopt;

import javautilArrayList;
import javaxjwsWebService;
import orgapachelogjLogger;
import comvodwsserviceGetPersonRequest;
import comvodwsserviceGetPersonResponse;
import comvodwsservicePerson;
import comvodwsserviceServiceResponseServiceMessage;

@WebService(serviceName=optsvs endpointInterface=comvodwsserviceoptVodOptService)
public class VodOptServiceImp implements VodOptService {
  
  private static final Logger log = LoggergetLogger(VodOptServiceImpclass);
  private static final String MSISDN = ;
  
  public GetPersonResponse getPerson(GetPersonRequest request) {
    
    GetPersonResponse response = new GetPersonResponse();
    
    if(request == null) {
      logerror(john service request is null);
      
      ServiceMessageMessage msg = new ServiceMessageMessage();
      msgsetContent(Sorry request is null);
      msgsetLevel(ERROR);
      
      ArrayList<ServiceMessageMessage> msglist = new ArrayList<ServiceMessageMessage>();
      msglistadd(msg);

      ServiceMessage error = new ServiceMessage();
      errorgetMessages()addAll(msglist);
      
      responsesetServiceMessage(error);
      
      return response;
    }
    
    String msisdn = requestgetMsisdn();
    logdebug(Getting person for msisdn:  + msisdn);
    
    Person person = new Person();
    personsetFirstName(jason);
    personsetLastName(wang);
    personsetMsisdn(MSISDN);
    
    responsesetPerson(person);
    
    return response;
  }
}

   WEBINF/webxml 
<?xml version= encoding=UTF?>
<! servlet  jsp  >
<webapp xmlns:xsi=instance
    xmlns= 
    xmlns:web=app__xsd 
    xsi:schemaLocation=;
    app__xsd id=WebApp_ID 
    version=>
      
  <displayname>vodws</displayname>
  <description>vodws</description>
  
  <! jwang : necessary if deploying to JBoss x not required for Glassfish  >
  <listener>
    <listenerclass>
        comsunxmlwstransport
    </listenerclass>
   </listener>
  
  <servlet>
    <description>vod opt web service</description>
      <displayname>vod opt web service</displayname>
    <servletname>VodOptService</servletname>
    <servletclass>comsunxmlwstransport;/servletclass>
    <loadonstartup></loadonstartup>
  </servlet>
  
  <servletmapping>
     <servletname>VodOptService</servletname>
     <urlpattern>/optsvs</urlpattern>
  </servletmapping>

  <! othe webxml content>

</webapp>

 WEBINF/sunjaxwsxml 
<?xml version= encoding=UTF?>

<! jwang : this file is required if deploying to JBossx not required for Glassfish  >
<endpoints
    xmlns=ws/ri/runtime
    version=>
    
    <endpoint
        name=VodOptService
        implementation=comvodwsserviceoptVodOptServiceImp
        service={}VodOptService
        port={}VodOptService
        urlpattern=/optsvs />
</endpoints>


{code}


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28616.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.