Foto av Johan Eltes

TSSS 2007 WebService Interop med .Net 3.0

// Johan Eltes

Arun Gipta - spec lead för JAX-WS presenterade WSIT - Suns tillägg till deras implementation av JAX-WS-specifikationen. JAX-WS är Javaplattformens standard för Web Services och XML-bindning fr.o.m. Java EE 5 och Java SE 5. JAX-WS-standarden täcker än så länge bara de WS-standards som profilerats av WS-I. Det är förstås på goda grunder. Användning av WS-*-standards utöver de få som WS-I hunnit profilera, innebär stora interoperabilitetsrisker.

WSIT - WebServices Interoperability Technology - syftar till att forcera interoperablitet mellan Suns JAX-WS implementation och Microsoft .Net web services för samtliga web-service specifikationer som stöds av .Net Windows Communication Framework version 3.0, även om WS-I ej profilerat dessa specifikationer.

Har jag någon nytta av detta om jag använder någon annan applikationsserver än Glassfish / Sun AS? För att dra nytta av WS-IT, måste man använda hela JAX-WS istället för den web-service-stack som följer med applikationservern . Det låter sig dock göras, t.ex. med WebSphere 6.1. Eftersom JAX-WS kräver Java SE 5, måste förstås applikationsservern stödja denna Java-version.

WSIT tillför interoperabilitet för följande WS-relaterade features:

  • WS-AtomicTransaction
  • WS-SecureConversation
  • WS-ReliableMessaging
  • FastInfoSet (binärform av XML för högprestanda-krav)
  • MTOM (XML-standard för hantering av binär-data, som stöds av Microsoft)
  • WebService messaging (WS-Addressing etc)
  • WS-MetadataExchange (SOAP-baserat / standardiserat utbyte av metadata, istället för REST-baserade konventionen …?wsdl)

Inget av detta påverkar programmeringsmodellen för JAXB-WS, utan hanteras via en WSIT-specifik konfigurationsfil som ska finnas i WEB-INF-katalogen eller i META-INF-katalogen (för EJB-baserade WebServices).

Exempel, WS-AtomicTransaction

Som exempel på “osynlighet” i koden, användes WS-AtomicTransaction. Med WSIT integreras WebService-baserade distribuerade transaktioner med container-transaktioner via EJB-baserade web-services. Givet att den WSIT-specifika deployment-descriptorn finns i EJB-jar:ens META-INF och där anger att den publicerade ENDPOINT:en ska ha stöd för WS-AtomicTransaction, behöver inget speciellt göras i koden, mer än att på standardiserat sätt ange att EJB:n ska vara en WS-endpoint:

@javax.jws.WebService
@javax.ejb.Stateless
@javax.ejb.TransactionManagement(CONTAINER)

public class Wirer {
  @javax.jws.WebMethod
  @javax.ejb.TransactionAttribute(REQUIRED)
  void wireFunds(...) throws ... {
    websrvc1.withdrawFromBankX(...);
    websrvc2.depositIntoBankY(...);
  }
}

Status och att komma igång

WSIT planeras få produktionsstatus i samband med release av Suns glassfish-baserade JavaEE 5-server Sun AS 9.1 - någon gång under 2007. För att testa, laddar man enklast hem Netbeans Enterprise Pack 5.5.1 Beta, enligt instruktioner i tidigare blog om Open ESB.

Kommentarer