SlideShare a Scribd company logo
the wondrous curse of interoperability steve loughran hp laboratories [email_address] january 2003 what interop is, and how to cope
why is S/W dev like mountaineering? all looks fine from 30,000' vision
up close  it's terrifying reality
and it is too late to turn back commitment!
how do you survive? equipment process practice planning fear management
equipment good CPU, lots of RAM, HDD, WLAN... IntelliJ IDEA WSDL editor Ant+JUnit/HttpUnit/Cactus cellphone & caffeine Continuous Integration Automated Deployment
process, planning, preparation alpine starts speed maps, milestones, checkpoints practice: crevasse rescue, first aid, navigation in zero-visibility, snow-caves... heaviest person goes first
the Web Services vision XML over HTTP lets everything talk to everything else
problem: sometimes it gets a bit "technical"
Web Services: quick summary .NET Axis  Pocket-SOAP JAX-RPC RI SOAP::Lite kSOAP gSOAP MS STK ...  many languages + many implementations = interop problems many specs
key problem: na ïve and u nrealistic expectations you can't send things like  java.io.File  over the wire. you shouldn’t send serializable objects like  javax.swing.JPanel  over the wire. you can't do transactions (yet) there is no good authentication system (yet? ever?) SOAP is not Corba, RMI, RMI-IIOP, .NET remoting, DCOM(+), or any other classic  remote object invocation mechanism
primitive data types Java bug database bug # 4186775 uint, ulong, char [WebMethod] public ulong Increment(ulong counter) { return counter+1; } [WebMethod]  public char GetChar() { return (char)(32+random.Next(64));  } "The omission of unsigned integral types from Java is somewhat controversial, but they are in fact inessential, if perhaps convenient nonetheless."
enumerations C# bitfield enums [Flags] public enum Rating : int { unknown=0, fun=1, scary=2, hard=4, painful=8 } [WebMethod]  public Rating HowWasIt(String route) { return (Rating)random.Next((int)Rating.painful*2);  } are marshalled as an XML Schema list <>fun scary hard</> that many things (Axis, Castor) cannot handle yet
exceptions how do you send exceptions down the wire how does the far end handle them? what about extra data in a SoapFault? what about languages with no notion of exceptions? JAX-RPC tries to send any Exception over the wire. axis: throw AxisFault with info in the details
framework objects and collections ArrayList  DataSet java.util.HashTable &quot;the hashtable problem&quot;
sessions cookies SoapHeaders dynamic endpoints sessionID in API -W3C push for SOAP GET is incompatible with SOAP Headers -WSDL for dynamic endpoints? -we need a SoapHeader standard [WebMethod( EnableSession=true )] stub. setMaintainSession(true)
no attachments in  Basic .NET 1.0 binaries: SOAP with Attachments (SwA) is in JAX-RPC DIME is in WS-toolkit for .NET Axis: SwA and DIME  (but not WSDL) base-64 is the fallback   .NET WSE   .NET 1.0   Sun JWSDP   Axis DIME SwA
other surprises RPC/ENC versus DOC/LIT floating point: decimal places, infinity DateTime & timezones object references ragged arrays Sun's JAX-RPC reference implementation bails out if it can't handle  all  methods at an endpoint.
why did we get into this mess? Web Services grew by accretion, not planning. nobody wants to scare developers off.  coding 'IDL' is considered harder than exporting methods. closed world systems (DCOM, RMI) don’t have interop issues.
there is no point writing a Web Service unless you want interoperability
who can fix this? the architects: W3C, WS-I the engineers: SoapBuilders you
stay out of trouble understand the nature of the problem avoid the big issues drive off the XSD & WSDL test for interop
avoid the big issues no unsigned datatypes, char, enums don’t send fancy objects stick to your own simple 'structs' and arrays support multiple binary upload mechanisms worry about sessions
start with the XML Schema the schema defines your serialization format this should be independent of use (files, SOAP, REST) but you  must  use the subset of that interoperates over SOAP.
drive off the WSDL create a WSDL file using the Schema create server stubs from the WSDL just as if you were writing an IDL specification only uglier
test for interop pick the likely 'other' platforms generate client bindings from the WSDL write test cases to call the service.  compile, run, fix repeat
ant unit test framework from junit.org httpunit: adds http functional testing Axis can generate JUnit tests from WSDL jakarta.apache.org/Ant imports WSDL <wsdltodotnet> <axis-wsdl2java> automated build and test with CruiseControl, Gump, Anthill JUnit
drive off the WSDL
ant-based test process
result: you know what to avoid
interop issues:   find them before you fall into them  summary
copyright © 2002-2003 Hewlett-Packard Company read these http://iseran.com/Steve/papers/interop
and maybe these

More Related Content

PPTX
Hadoop: today and tomorrow
Steve Loughran
 
PDF
Fluentd and WebHDFS
SATOSHI TAGOMORI
 
PDF
How to (almost certainly) fail: Building vs. buying your API infrastructure
Apigee | Google Cloud
 
PDF
The Future of Web Attacks - CONFidence 2010
Mario Heiderich
 
KEY
SD, a P2P bug tracking system
Jesse Vincent
 
PPT
Dev381.Pp
Severus Prime
 
PPT
When Web Services Go Bad
Steve Loughran
 
PPT
Cloud State of the Union for Java Developers
Burr Sutter
 
Hadoop: today and tomorrow
Steve Loughran
 
Fluentd and WebHDFS
SATOSHI TAGOMORI
 
How to (almost certainly) fail: Building vs. buying your API infrastructure
Apigee | Google Cloud
 
The Future of Web Attacks - CONFidence 2010
Mario Heiderich
 
SD, a P2P bug tracking system
Jesse Vincent
 
Dev381.Pp
Severus Prime
 
When Web Services Go Bad
Steve Loughran
 
Cloud State of the Union for Java Developers
Burr Sutter
 

Similar to The Wondrous Curse of Interoperability (20)

PPT
Node js presentation
martincabrera
 
PPT
GWT is Smarter Than You
Robert Cooper
 
PDF
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
Icinga
 
KEY
node.js: Javascript's in your backend
David Padbury
 
PDF
주로사용되는 Xss필터와 이를 공격하는 방법
guestad13b55
 
PDF
Original slides from Ryan Dahl's NodeJs intro talk
Aarti Parikh
 
PPTX
Raising the Bar on Robotics Code Quality
Thomas Moulard
 
PPTX
Exploring the Internet of Things Using Ruby
Mike Hagedorn
 
PPTX
Mpi.Net Talk
willmation
 
PPTX
Node.JS| Coffeescript Presentation
Sam Frons
 
PPTX
Event-driven IO server-side JavaScript environment based on V8 Engine
Ricardo Silva
 
PPT
Cloud Formation
Adron Hall
 
PPT
Web Development Environments: Choose the best or go with the rest
george.james
 
PPT
Not only SQL
Niklas Gustavsson
 
PDF
JAX London 2015: Java vs Nodejs
Chris Bailey
 
PPTX
Building services on AWS in China region
Roman Naumenko
 
PPT
Jassa la GeekMeet Bucuresti
alexnovac
 
PDF
NodeJS for Beginner
Apaichon Punopas
 
ODP
Wire It Presentation
Eric Abouaf
 
PDF
Java vs. Java Script for enterprise web applications - Chris Bailey
JAXLondon_Conference
 
Node js presentation
martincabrera
 
GWT is Smarter Than You
Robert Cooper
 
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
Icinga
 
node.js: Javascript's in your backend
David Padbury
 
주로사용되는 Xss필터와 이를 공격하는 방법
guestad13b55
 
Original slides from Ryan Dahl's NodeJs intro talk
Aarti Parikh
 
Raising the Bar on Robotics Code Quality
Thomas Moulard
 
Exploring the Internet of Things Using Ruby
Mike Hagedorn
 
Mpi.Net Talk
willmation
 
Node.JS| Coffeescript Presentation
Sam Frons
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Ricardo Silva
 
Cloud Formation
Adron Hall
 
Web Development Environments: Choose the best or go with the rest
george.james
 
Not only SQL
Niklas Gustavsson
 
JAX London 2015: Java vs Nodejs
Chris Bailey
 
Building services on AWS in China region
Roman Naumenko
 
Jassa la GeekMeet Bucuresti
alexnovac
 
NodeJS for Beginner
Apaichon Punopas
 
Wire It Presentation
Eric Abouaf
 
Java vs. Java Script for enterprise web applications - Chris Bailey
JAXLondon_Conference
 
Ad

More from Steve Loughran (20)

PPTX
Hadoop Vectored IO
Steve Loughran
 
PPTX
The age of rename() is over
Steve Loughran
 
PPTX
What does Rename Do: (detailed version)
Steve Loughran
 
PPTX
Put is the new rename: San Jose Summit Edition
Steve Loughran
 
PPTX
@Dissidentbot: dissent will be automated!
Steve Loughran
 
PPTX
PUT is the new rename()
Steve Loughran
 
PPT
Extreme Programming Deployed
Steve Loughran
 
PPT
Testing
Steve Loughran
 
PPTX
I hate mocking
Steve Loughran
 
PPTX
What does rename() do?
Steve Loughran
 
PPTX
Dancing Elephants: Working with Object Storage in Apache Spark and Hive
Steve Loughran
 
PPTX
Apache Spark and Object Stores —for London Spark User Group
Steve Loughran
 
PPTX
Spark Summit East 2017: Apache spark and object stores
Steve Loughran
 
PPTX
Hadoop, Hive, Spark and Object Stores
Steve Loughran
 
PPTX
Apache Spark and Object Stores
Steve Loughran
 
PPTX
Household INFOSEC in a Post-Sony Era
Steve Loughran
 
PPTX
Hadoop and Kerberos: the Madness Beyond the Gate: January 2016 edition
Steve Loughran
 
PPTX
Hadoop and Kerberos: the Madness Beyond the Gate
Steve Loughran
 
PPTX
Slider: Applications on YARN
Steve Loughran
 
PPTX
YARN Services
Steve Loughran
 
Hadoop Vectored IO
Steve Loughran
 
The age of rename() is over
Steve Loughran
 
What does Rename Do: (detailed version)
Steve Loughran
 
Put is the new rename: San Jose Summit Edition
Steve Loughran
 
@Dissidentbot: dissent will be automated!
Steve Loughran
 
PUT is the new rename()
Steve Loughran
 
Extreme Programming Deployed
Steve Loughran
 
I hate mocking
Steve Loughran
 
What does rename() do?
Steve Loughran
 
Dancing Elephants: Working with Object Storage in Apache Spark and Hive
Steve Loughran
 
Apache Spark and Object Stores —for London Spark User Group
Steve Loughran
 
Spark Summit East 2017: Apache spark and object stores
Steve Loughran
 
Hadoop, Hive, Spark and Object Stores
Steve Loughran
 
Apache Spark and Object Stores
Steve Loughran
 
Household INFOSEC in a Post-Sony Era
Steve Loughran
 
Hadoop and Kerberos: the Madness Beyond the Gate: January 2016 edition
Steve Loughran
 
Hadoop and Kerberos: the Madness Beyond the Gate
Steve Loughran
 
Slider: Applications on YARN
Steve Loughran
 
YARN Services
Steve Loughran
 
Ad

Recently uploaded (20)

PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Doc9.....................................
SofiaCollazos
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 

The Wondrous Curse of Interoperability

  • 1. the wondrous curse of interoperability steve loughran hp laboratories [email_address] january 2003 what interop is, and how to cope
  • 2. why is S/W dev like mountaineering? all looks fine from 30,000' vision
  • 3. up close it's terrifying reality
  • 4. and it is too late to turn back commitment!
  • 5. how do you survive? equipment process practice planning fear management
  • 6. equipment good CPU, lots of RAM, HDD, WLAN... IntelliJ IDEA WSDL editor Ant+JUnit/HttpUnit/Cactus cellphone & caffeine Continuous Integration Automated Deployment
  • 7. process, planning, preparation alpine starts speed maps, milestones, checkpoints practice: crevasse rescue, first aid, navigation in zero-visibility, snow-caves... heaviest person goes first
  • 8. the Web Services vision XML over HTTP lets everything talk to everything else
  • 9. problem: sometimes it gets a bit &quot;technical&quot;
  • 10. Web Services: quick summary .NET Axis Pocket-SOAP JAX-RPC RI SOAP::Lite kSOAP gSOAP MS STK ... many languages + many implementations = interop problems many specs
  • 11. key problem: na ïve and u nrealistic expectations you can't send things like java.io.File over the wire. you shouldn’t send serializable objects like javax.swing.JPanel over the wire. you can't do transactions (yet) there is no good authentication system (yet? ever?) SOAP is not Corba, RMI, RMI-IIOP, .NET remoting, DCOM(+), or any other classic remote object invocation mechanism
  • 12. primitive data types Java bug database bug # 4186775 uint, ulong, char [WebMethod] public ulong Increment(ulong counter) { return counter+1; } [WebMethod] public char GetChar() { return (char)(32+random.Next(64)); } &quot;The omission of unsigned integral types from Java is somewhat controversial, but they are in fact inessential, if perhaps convenient nonetheless.&quot;
  • 13. enumerations C# bitfield enums [Flags] public enum Rating : int { unknown=0, fun=1, scary=2, hard=4, painful=8 } [WebMethod] public Rating HowWasIt(String route) { return (Rating)random.Next((int)Rating.painful*2); } are marshalled as an XML Schema list <>fun scary hard</> that many things (Axis, Castor) cannot handle yet
  • 14. exceptions how do you send exceptions down the wire how does the far end handle them? what about extra data in a SoapFault? what about languages with no notion of exceptions? JAX-RPC tries to send any Exception over the wire. axis: throw AxisFault with info in the details
  • 15. framework objects and collections ArrayList DataSet java.util.HashTable &quot;the hashtable problem&quot;
  • 16. sessions cookies SoapHeaders dynamic endpoints sessionID in API -W3C push for SOAP GET is incompatible with SOAP Headers -WSDL for dynamic endpoints? -we need a SoapHeader standard [WebMethod( EnableSession=true )] stub. setMaintainSession(true)
  • 17. no attachments in Basic .NET 1.0 binaries: SOAP with Attachments (SwA) is in JAX-RPC DIME is in WS-toolkit for .NET Axis: SwA and DIME (but not WSDL) base-64 is the fallback   .NET WSE   .NET 1.0   Sun JWSDP   Axis DIME SwA
  • 18. other surprises RPC/ENC versus DOC/LIT floating point: decimal places, infinity DateTime & timezones object references ragged arrays Sun's JAX-RPC reference implementation bails out if it can't handle all methods at an endpoint.
  • 19. why did we get into this mess? Web Services grew by accretion, not planning. nobody wants to scare developers off. coding 'IDL' is considered harder than exporting methods. closed world systems (DCOM, RMI) don’t have interop issues.
  • 20. there is no point writing a Web Service unless you want interoperability
  • 21. who can fix this? the architects: W3C, WS-I the engineers: SoapBuilders you
  • 22. stay out of trouble understand the nature of the problem avoid the big issues drive off the XSD & WSDL test for interop
  • 23. avoid the big issues no unsigned datatypes, char, enums don’t send fancy objects stick to your own simple 'structs' and arrays support multiple binary upload mechanisms worry about sessions
  • 24. start with the XML Schema the schema defines your serialization format this should be independent of use (files, SOAP, REST) but you must use the subset of that interoperates over SOAP.
  • 25. drive off the WSDL create a WSDL file using the Schema create server stubs from the WSDL just as if you were writing an IDL specification only uglier
  • 26. test for interop pick the likely 'other' platforms generate client bindings from the WSDL write test cases to call the service. compile, run, fix repeat
  • 27. ant unit test framework from junit.org httpunit: adds http functional testing Axis can generate JUnit tests from WSDL jakarta.apache.org/Ant imports WSDL <wsdltodotnet> <axis-wsdl2java> automated build and test with CruiseControl, Gump, Anthill JUnit
  • 30. result: you know what to avoid
  • 31. interop issues: find them before you fall into them summary
  • 32. copyright © 2002-2003 Hewlett-Packard Company read these http://iseran.com/Steve/papers/interop

Editor's Notes

  • #2: presentation for padnug,org; http://www.padnug.org/padnug/WebServicesSIG.aspx Interop: What were they thinking of?
  • #3: A bit of a distraction before we get into the detail, with the definitive mountaineering metaphor slideshow. Most uses of mountaineering &apos;many people work on an Everest expedition, only two summit&apos; are done by HR and managers who don’t know the details of modern Alpinism. But I do, so here is a comparison accompanied by photos mostly from Ranier, some from Mt Hood and one from the Alps (Ecrins Massif).
  • #5: The only way out is through.
  • #6: There is one big difference: get it wrong in the mountains and you are dead, survivors make money selling airport books about near-death-experiences, for reading by passengers who don’t find fly-by-wire planes programmed by us developers scary enough. Get it wrong in most software projects and you are still alive, just with a different employer. And those who survive in the same company end up vilified and fielding support calls.
  • #7: Note that a cellphone actually goes onto the list of both types of entertainment.
  • #8: -Set off early so that if anything goes pear shaped you have most of the day -know what your objectives are, have maps, milestones, don’t be afraid to replan -don’t climb Rainier (or even Mt hood) without some practice under your belt. And that means more than practice of nice weather days out; you need to practice things going wrong: crevasse rescue, bad weather days, dehydration days. -send the person most likely to fall into a crevasse first. Its better for everyone if things go wrong ahead rather than behind or in the middle of the team. This doesn’t mean they are expendable, just more likely to find problems. Which brings us to web services, interop and the testing, thereof.
  • #9: the 30,000&apos; view
  • #10: Up close. Good days ::= days when the network is good, person writing the service knew what they were doing, no attempt to share binaries, manage sessions, etc.
  • #11: if you are ignorant of SOAP, here is the one page reminder. note that WSDL is optional, SOAP messages have envelopes, headers and bodies, and there are two ways of encoding stuff: RPC/Encoded and DOC/literal
  • #13: Sun don’t think you need unsigned datatypes, therefore you cant work with any service that uses them. XSD doesn’t have a char datatype, so there isn&apos;t a standard way to send them over the wire. &amp;quot;What were they thinking of?&amp;quot;
  • #14: We can&apos;t even do enums reliably if the far end cant handle the XSD space-separated-list-in-an-XML-element form of lists. This isnt a fundamental issue, just an engineering one.
  • #15: See the JAX-RPC spec for Java exception handling. Basically JAX-RPC is trying to marshall Java exceptions in a way that they can be recreated. This is because Java methods need to state the exceptions they throw, the exception set can be included in the WSDL, client versions written, etc. But how does this work across languages? How does it work across implementations of JAX-RPC?
  • #16: The problem here is that just because you can send stuff over the wire, doesn’t mean the far end can handle it. Sometimes they cant, sometimes they can, but not by creating the obvious bindings you&apos;d expect.
  • #17: The flaws with cookies are well known, with the extra caveat that whoever maintains java.net.UrlConnection has never read the bit of the HTTP spec that covers them. For that, the pains with different paths to the service serving up cookies differently, makes them something to avoid. Also not all clients support them, and it aint always by default. e.g Apache Axis, you must enable it client side. SoapHeaders are the cleaner and more elegant way. But it does require Dynamic endpoints: returning new URLs after a login. I like this model, but it is hard to work with, too &apos;RESTful&apos;; but maps nicely to objects. .NET remoting gives you this. API: include session ID in messages. Ugly, at odds with AOP, but works well, works consistently, and is easily tested. Guess which I use. see W3c: http://www.w3.org/TR/soap12-part0/ on the subject of SOAP and GET &amp;quot;What were they thinking of?&amp;quot;
  • #18: You could maybe point the blame at this for XML; there is no way to reliably include arbitrary binary code in an XML file. If only they&apos;d had a length+data way of encoding binary, life would be simple. The other blame is at Team .NET for leaving out SwA because DIME was better. Maybe it is, but they didn’t ship with DIME either. So leaving out SwA was either a schedule driven play or an attempt to stop SwA becoming ubiquitous. For now: xs:base64binary, xs:hexBinary. But try sending 2GB of print data in base 64 format. Actually, try sending 2GB of data in any SOAP attachment format.
  • #19: This is just other little showstoppers that will hurt you if you are not careful.
  • #20: From a CS perspective, SOAP+XSD+WSDL is ugly, only their mothers would love them, and even then they&apos;d hope the next kid will look better. But ugly is irrelevant. (nb, notice that Corba can have interop; but when used as a C++ to C++ system it is generally ok, because everything is well specified in the very large CORBA spec and its mostly one language everywhere)
  • #21: Why are you writing a web service unless you want people to call you? And can you dictate what language they will be using, or do you want all customers, regardless of what they call you with. But lets look at what we have: +finding: UDDI, WSIF, SLAv2) +binding: WSDL +invocation: SOAP +data representation: XSD The finding and binding features of SOAP, indeed WSDL on its own, are what makes SOAP so interesting today. The fact that interop is a big issue is a detail, compared to the profound notion that you can browse to a web page, download some description of endpoints and suddenly start posting structured data to it.
  • #22: WS-I: I havent seen an enum or session working group here, that is the kind of implementation detail that architects don’t bother with. Plus WS-I is very political. SoapBuilders: This is where interop does seem to get solved. But we could do with Collections, exceptions, , char, enum and a big fat &apos;guide to interoperability&apos; paper Axis: well, you are axis devs if you are users; work with us on the docs, exceptions, better interop tests, etc. W3C: add xml headers to HTTP GET s.t. SOAP GET works; char on Schema. Sun: give us unsigned data, add HashTable &amp;c to JAX-RPC, fix the exceptions model. MS: Give us SwA on .NET, document DataSet, add HashTable &amp;c. Oh, and Zip support too; you can&apos;t send or receive zipped data right now. You: fix your own app to not have interop issues.
  • #23: Question: what are the hazards in this picture, taken below the summit of Mt Hood? Most people think of the usual ice and rock problems, but a big safety issue here is that bare patch of rock to the centre-right of the scene. Anything at that angle at that altitude should normally be covered in snow –but it isnt. This could be because of an avalanche, but there is no crown-wall, and you&apos;d expect to see the base layer of snow unless the low-friction base was actually frozen turf. The reason the rocks are bare is because we are climbing a volcano, this is the crater, and they are being heated by gases coming up from below. The atmosphere near the rocks is too toxic to be breathable. If you have done your research, you know this. If you haven&apos;t, and you go over to take a look, you are in trouble.
  • #24: This is all very dumbed down, but it is pragmatic. Arrays work. Simple objects with attributes and get/set methods work. If you keep everything simple and avoid well known trouble spots, all should work
  • #26: This is a hard one. I hate looking at WSDL, it is just so convoluted. Same for XSD, though that one I can handle, slowly, even if something like XML Spy or VS.NET is needed to make it easier. Omniopera and CapeClear are alternatives. One q: Why do you need to buy a new tool to edit WSDL files? Was there ever such a thing as an IDL editor other than a text editor? And so somehow WSDL is better than IDL? I don’t understand that.
  • #27: The way to test for interop is to call your service from different toolkits and languages, which means replicating the usual client coding process. To do this in a test case environment, you need to automate the process. I&apos;m going to look at automating the Java side test process
  • #28: These two tools are the secret of why Java projects are staying in control; everyone is using the same test framework, and the same build tools, tools that understand testing is integral. Together nothing gets deployed that doesn’t pass the tests. As well as using them for pure Java dev, we can use them for .NET interop testing.
  • #29: I&apos;m not going to demo this, just show that you can work with Schema and WSDL as if it were an IDL spec of a service, that both the service and the clients adhere to.
  • #30: this is our test workflow, what we will do in Ant.
  • #31: This is the output: a list of how many tests ran, what the failures were.
  • #32: And that&apos;s it. We&apos;ve looked at areas of trouble, ranging from language issues (uint), framework differences and just bits of SOAP that arent nailed down yet. If your app strays into the trouble areas, you are going to get hurt. The trick is not to stay off the mountain, but to go through the crevasses carefully. Probe the snowbridges, know where trouble lies and plan your route, and just be careful.
  • #33: Java Development with Ant, by me and Erik, shows how to use ant, how to interop test Axis servers with .net clients, set up continuous integration servers and many other useful things. also, http://iseran.com/Steve/papers.html
  • #34: Patterns of enterprise app arch by martin fowler: good enterprise patterns, including a critique of EJB flaws: maybe too much emphasis on data binding, not the other aspects of big server side apps Scotland&apos;s Winter Mountains, Martin Moran. Best book on mountaineering ever. Full of facts, figures and anecdotes. flaws: second edition still covers the nutritional values of fried breakfasts and hangovers, but omits the religious debate between bars of chocolate and honey slices. Also by virtue of a focus on Scotland, has nothing on glacier work.