| By Sanjay Narang | Article Rating: |
|
| February 11, 2007 07:45 PM EST | Reads: |
22,669 |
Special Cases You can come across many issues, which can't be categorized in a particular type of issue like the ones listed above. Such issues might be because of some problem in the configurations of a service, or client, or might also be because of some bug in a product. For example, there's a special problem between WLS 9.0 and WCF Feb 2006 CTP.
When a client running in WLS 9.0 calls an operation defined in a WCF Feb 2006 CTP service using WS-RM, the WLS requires at least one "two-way" (Request-Response or Solicit-Response) operation to be defined in the WCF service. Otherwise, WLS can't use WS-RM for communicating with WCF. The "two-way" operation is required even if the WLS client is only calling "one-way" operations in the WCF service.
To understand this special problem, you have to know the kinds of messages that get exchanged in a typical WS-RM-based communication, which is shown in Figure 2:
According to the WS-RM specification, a source end-point sends a message with a <CreateSequence> element to a destination end-point to start a reliable session. The destination end-point responds with a message having a <CreateSequenceResponse> element. When the destination end-point is deployed using WCF CTP, WCF CTP sends the message with a <CreateSequenceResponse> element to the location that's provided in the <ReplyTo> element (defined in the WS-Addressing specification), which is present in the header of the CreateSequence message. Whereas, when WLS 9.0 hosts a destination end-point, it sends the response message to the location provided in the <AcksTo> element (defined in the WS-RM specification), which is present inside the <CreateSequence> element of the CreateSequence message.
When a WLS 9.0 client sends WS-RM-based messages to a WCF CTP service and there's no two-way operation defined in the service, the <ReplyTo> element in the CreateSequence message sent by WLS client contains the URI for an anonymous end-point (a well-known URI defined in WS-Addressing) as given below:
<wsa:ReplyTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
</wsa:ReplyTo>
The WCF CTP service uses the address provided in the <ReplyTo> element to send the response message with the <CreateSequenceResponse> element. Because the anonymous end-point address provided here is used to indicate no response processing, no CreateSequenceResponse reaches the client and hence a reliable session can't be initiated. However, when a WCF CTP service has at least one two-way operation defined, WLS 9.0 fills the <ReplyTo> element of the CreateResponse message with the valid URI and hence a reliable session can be initiated successfully.
Such problems are difficult to identify and can be found only through careful troubleshooting and reading the information available in the product documentation and on the Internet.
Development Best Practices
The WS-*-based
development is a complex activity because of all of these issues. You
can follow the best practices given below to reduce the complexity to
some extent.
1. Start implementing using only the basic Web Services specification.
If your Web Services aren't interoperating at the basic level,
implementing WS-* specifications will only make the issues harder to
identify.
2. For basic Web Services specifications, always use WS-I's Basic
Profile 1.0 or 1.1 guidelines. Most of vendors provide Basic
Profile-compliant products and have tested those products
comprehensively for interoperability. Hence, by following the Basic
Profile, you can easily avoid the issues that WS-I has already
addressed in the Basic Profile. You can verify if your Web Services are
following the Basic Profile by testing your WSDLs in WSDL testing
tools. There are many free tools, including those provided by WS-I, as
well as commercial ones, available to test WSDL.
3. Once your Web Services are interoperating with basic specifications
and BP1.x, start implementing the required WS-* specifications one by
one. If you implement all the required specifications (e.g.
WS-Security, WS-RM, and WS-AT) at the same time and come across an
issue, it would be difficult to identify the culprit.
4. Although this is a very common best practice that can be applied to
any scenario, I feel it's important to mention here. Search on the
Internet for other findings and samples. As WS-* specifications haven't
matured, the documentation for the available products is either
insufficient or incorrect in some areas. In such a situation, it
becomes important to learn from others' experiences. Look at the blogs
of a vendor's key employees involved in interoperability, post into
forums like ws-builders or soapbuilders (described later), or just do a
simple Web search. Many times, you'll find someone who has already
encountered the issue you're facing and he or she can either help you
or can tell you that the problem can't be addressed in the current
version of a product.
Troubleshooting Best Practices
Most of
the time you won't get successful interoperability in the first try.
You can follow the troubleshooting best practices given below to
identify the root cause of the issues you come across:
1. When a problem occurs, identify the step where the problem is
happening. The exact process followed to make a call from a Web Service
or a client to another Web Service may be different from one product to
the other, but the high-level steps remain the same:
a. Get the WSDL of the target Web Service that the client needs to call
b. Generate a "stub" or "proxy" using various tools available in Web
Services toolkits or client development environments (e.g., Add Service
Reference in Visual Studio 2005).
c. Use the generated proxy in the client code to send messages (or make calls) to the target Web Service.
The problem could exist in any of these steps. There could be instances where the WSDL of a target service isn't compatible with your client environment. The examples of such scenarios and their solutions have already been explained.
When the problem exists in the proxy generation, you can look into the output of the tool used for generating the proxy to find out the exact error(s). If the error description doesn't provide much help, you can try other best practices described in the following bullets.
1. When the problem happens in the messages exchanged, you need to
analyze the actual SOAP message exchanged to find the problem and fix
it. Many vendors provide tracing tools with their products that
generate traces of all messages exchanged between two communicating Web
Services. For example, Microsoft provides a TraceViewer tool with WCF
that helps you easily view, group, and filter traced messages. You can
also use the tools that provide traces for TCP packets such as the TCP
Monitor provided with Apache AXIS. To analyze the messages, you should
have adequate knowledge about the specification you're implementing.
You should know the different kinds of SOAP messages, their structure
as well as sequence, that get exchanged between the two interacting
components implementing that specification. For example, to diagnose an
issue in a WS-RM implementation, you have to know the different types
of messages that are exchanged during a reliable session:
CreateSquence, CreateSequenceResponse, Sequence,
SequenceAcknowledgement, etc. as shown in Figure 2.
In this step too, if the message analysis doesn't provide much help,
you can try other best practices described in the following bullets.
2. Try implementing a WS-* specification between two Web Services
developed on the same product. Do this on both the products you're
trying to interoperate. If you're successful then take the same
configurations to implement the specification between the Web Services
developed on different products. By doing this you can identify if the
issue lies in a particular product or in the general configuration of
that specification. When both of these options are ruled out, you can
look for other interoperability-related issues.
3. When you can't identify the reason for an issue that exists while
implementing a WS-* specification between your application's Web
Services, try implementing the specification between simple "hello
world" types of Web Services. This will help you separate business
logic-related problems from the specification's configuration-related
problems. If that succeeds then apply the same configurations to your
application's Web Services.
Web Services Interoperability Resources
There's a
huge amount of information available on Web Services interoperability
and WS-* specifications. I provide some selected resources and brief
descriptions here that I found useful.
Community Groups
- SOAP Builder Yahoo Group:
http://groups.yahoo.com/group/soapbuilders/
It's a community group to discuss cross-platform implementations and interoperability issues primarily about core Web Services specifications. You'll find messages from employees of key vendors such as BEA, IBM, and Microsoft who are involved in building Web Services and SOAP-based products. You'll find different types of messages: general discussions, announcements of new events (such as Plug Fests), product versions and features, and clarifications and solutions to problems that product consumers have. - WS-Builders Yahoo Group:
http://groups.yahoo.com/group/ws-builders/
It's another community group similar to the SOAP Builders group, but focused more on WS-* specifications.
As interoperability gains in importance, industry vendors are getting together to make their products interoperate. Interoperability labs are examples of industry's effort towards interoperability. In these events, many vendors get together to test their products (application servers, Web Services frameworks, SOAP toolkits, etc.) with the products of other vendors.
Microsoft hosts similar events called WCF Plug Fests. At these events Microsoft invites all industry vendors to its campus for a three- or four-day workshop, where vendors test their products against WCF.
You can get very useful information from such events that may include interoperability scenarios descriptions, scenario testing scripts, live end-points, and sample WSDLs. Here are links to get information about the past events:
- WCF Plug Fest:
http://mssoapinterop.org/ilab/wcfinteroplab.htm - SOAPBuilders Interoperability Lab Round 2 Home Page:
www.whitemesa.com/interop.htm - SOAPBuilders Interoperability Lab Round 1 Home Page:
www.xmethods.net/ilab/
To find out about future events, check the announcements at community groups listed above.
Here's a list of a few vendor Web pages that are dedicated to Web Service specifications and interoperability
- Microsoft's Web Services specifications page:
Provides a comprehensive list of all the Web Services specifications
that Microsoft supports in a logically structured Web Services protocol
stack. Here you can download actual specification documents, check
their status, and find white papers, and other resources about the
specifications.
http://msdn.microsoft.com/webservices/webservices/understanding/specs/default.aspx - MSDN page on Web Services interoperability:
http://msdn.microsoft.com/webservices/webservices/building/interop/default.aspx - IBM's Web Services specifications page:
Like Microsoft's page, IBM's page also provides a comprehensive list of
all the Web Service specifications that IBM supports in a clearly
categorized structure. Here too you can download actual specification
documents, check their status, and find white papers, and other
resources.
www-128.ibm.com/developerworks/webservices/standards/ - BEA's Web Services standards page:
http://dev2dev.bea.com/webservices/standards.html - Sun's Web Services Interoperability Technology (WSIT) for Java and .Net page:
http://java.sun.com/webservices/interop/index.jsp
Web Services have evolved over the past few years and their support is now considered part of the core platform of most SOA-based solutions. With this evolution, industry is coming up with new specifications to support advance requirements like security, reliability, and transactions. These specifications are commonly referred as WS-* specifications and are relatively new compared to basic Web Services specification such as WSDL, and UDDI. The products providing support for the WS-* specifications haven't matured adequately. As a result, achieving interoperability using them is relatively difficult. However, if you select the products after a detailed analysis about the specifications they support and you follow the guidelines listed in this article, you can achieve an interoperable implementation in much less time.
Published February 11, 2007 Reads 22,669
Copyright © 2007 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Sanjay Narang
Sanjay Narang is a Senior Technology Consultant at Global Delivery India Center (GDIC) of Hewlett-Packard. He is based in Bangalore, India and has around 8 years of IT experience. Sanjay has done Post Graduate Diploma in IT (PGDIT) and holds MCSD for .Net Framework and SCJP certifications. He has been involved in designing and developing solutions based on Microsoft technologies for a long time. Apart from software process automation and VSTS, he is working on SOA related projects around Microsoft technologies and their interoperability with other technologies. He has published papers around IPv6, VSTS, SOA, and Web Services and writes extensively about VSTS in his blog: http://sanjaynarang.wordpress.com/ He can be contacted at sanjay.narang@yahoo.com.
![]() |
SOA Web Services Journal News 12/17/06 11:56:05 AM EST | |||
Interoperability is an important factor in the success of solutions that are based on Web Services and Service Oriented Architecture (SOA), along with other key factors such as contracts, loose coupling, and reuse. Interoperability is generally accomplished by developing your Web Services using the well-established guidelines for implementing Web Services and by following industry standards such as XML, WSDL, SOAP, and UDDI. However, just following Web Services standards and guidelines during the development phase of a project isn't sufficient to achieve interoperability. |
||||
- The Top 150 Players in Cloud Computing
- Commercial vs Federal Cloud Computing
- Why IBM’s Server Chief Got Busted
- Industry Experts Discuss the State of Cloud Computing
- Cloud Expo New York Call for Papers Deadline December 15
- Cloud Computing on Gartner's Top 10 List and SYS-CON Events' 2010 Calendar
- US Federal Government is Major Cloud Computing Innovator
- Google Wave
- Ulitzer.com Named Exclusive "New Media" Sponsor of Cloud Computing Conference & Expo
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- Adaptivity & Cloud Computing: Exclusive Q&A with CEO Tony Bishop
- 4th International Cloud Expo: Photo Album
- The Top 150 Players in Cloud Computing
- SYS-CON.TV: Cloud Computing Expo Power Panel
- Commercial vs Federal Cloud Computing
- Why IBM’s Server Chief Got Busted
- 1st Annual GovIT Expo: Letter from the Technical Chair
- Deputy CIO of the CIA to Keynote 1st Annual GovIT Expo
- Industry Experts Discuss the State of Cloud Computing
- SOA World Power Panel on SYS-CON.TV
- CIA was Headed to an Enterprise Cloud All Along: Jill Tummler Singer
- 1st Annual Government IT Conference & Expo: Themes & Topics
- Cloud Expo New York Call for Papers Deadline December 15
- Stock in Focus: Dragon Capital
- The i-Technology Right Stuff
- Who Are The All-Time Heroes of i-Technology?
- Get the Message
- Where Are RIA Technologies Headed in 2008?
- i-Technology Viewpoint: Is Web 2.0 the Global SOA?
- i-Technology Viewpoint: Thinking Outside the VC Box
- ESB Myth Busters: 10 Enterprise Service Bus Myths Debunked
- i-Technology Viewpoint: When to Leave Your First IT Job
- SOA Web Services Edge Conference Coverage on SYS-CON.TV
- Five Reasons Why Web 2.0 Matters
- SYS-CON.TV's "SOA Web Services" and "Enterprise Open Source" Programs To Air in December
- SOA World Conference & Expo SYS-CON.TV Power Panel Live From Times Square










There are a variety of applications that supp...


























