{"id":8,"date":"2003-10-08T20:32:36","date_gmt":"2003-10-08T18:32:36","guid":{"rendered":"http:\/\/www.pleus.net\/blog\/?p=8"},"modified":"2010-08-13T00:14:30","modified_gmt":"2010-08-12T22:14:30","slug":"web-service-interop-impressions","status":"publish","type":"post","link":"https:\/\/www.pleus.net\/blog\/?p=8","title":{"rendered":"Web Service Interop Impressions"},"content":{"rendered":"<p>As we know Web Services are about interoperability.<br \/>\nLet&#8217;s prove it I thought and tried to figure out how far we can get when we try to write interoperable Web Services.<br \/>\nOn the .NET side I used WSE2.0. On the J2EE it&#8217;s a little bit more complicated.<br \/>\nYou have to choose amongst Axis, IBM WSDK, Sun&#8217;s JWSDP,BEA WLS, Glue, etc. etc.<br \/>\nAlthough I know that it&#8217;s not the most powerful SDK, I chose Sun&#8217;s JWSDP1.2 because it is what we will see in all the other products earlier or later.<\/p>\n<p>In general interop works if you follow some best practices. <\/p>\n<p>Here are my first insights:<\/p>\n<p>1. Document\/Literal with SoapAction routing does not work for cross plattform interoperability.<\/p>\n<p>   In the first attempt we used VS.NET to generate the WSDL contract. It produced a document\/literal style.<br \/>\n   The document contained the soapaction attribute in the soapbinding:operation element. The JWSDP didn&#8217;t recognise this attribute to generate client proxies.<br \/>\n   Therefore the service was called with the http soapaction-header of &#8220;&#8221;. This caused the service to raise an error.<br \/>\n   When we used JWSDP to generate the WSDL it produced an RPC\/encoded version. Using this as a basis for the service generation worked for both platforms.<br \/>\n   But using RPC\/encoded is not recommended due to the fact that document\/literal will be the standard of the future because of it&#8217;s selfdecribing nature. <\/p>\n<p>2. SOAP attachments<\/p>\n<p>   JWSDP dows not support DIME for SOAP attachments. The application\/dime mime type is missing from the HTTP accept-header when sending a request.<br \/>\n   On the other hand WSE does not support MIME attachments. Axis supports DIME. Therefore it&#8217;s not possible to write interoperable Web Services with DIME or MIME attachments. In order to be interoperable avoid attachments until a standard has been established.<br \/>\n   DIME support in WSE is pretty good.<br \/>\n   It&#8217;s not possible to write an J2EE service with attachments (MIME) with the help of JAX-RPC. One has to use a the lower level API SAAJ and create a servlet to process the message on the HTTP level.<\/p>\n<p>3. JWSDP does not support WS-Security. Only HTTP based Authentication is possible.<\/p>\n<p>Conclusion:<\/p>\n<p>WSE2.0 supports a lot of features and opportunities but for interoperability you need two parties. The most important aspect of Web Services is that you can connect different platforms in a secure and reliable way. My impression is to make this reality there is still a long way to go. Let&#8217;s see&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As we know Web Services are about interoperability. Let&#8217;s prove it I thought and tried to figure out how far we can get when we try to write interoperable Web Services. On the .NET side I used WSE2.0. On the J2EE it&#8217;s a little bit more complicated. You have to choose amongst Axis, IBM WSDK, &hellip; <a href=\"https:\/\/www.pleus.net\/blog\/?p=8\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Web Service Interop Impressions<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-8","post","type-post","status-publish","format-standard","hentry","category-soa"],"_links":{"self":[{"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/8","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8"}],"version-history":[{"count":2,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/8\/revisions"}],"predecessor-version":[{"id":383,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/8\/revisions\/383"}],"wp:attachment":[{"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pleus.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}