Saying Goodbye

Almost three years ago, I began a new adventure with a startup company called Atomynet. These past years have gone by in a blur, starting with a vague idea and turning into a tangible product. It was a great learning experience for me and I had the opportunity to work with a number of very talented individuals here in the US as well as in Israel. In total, I was able to visit Israel eight times and have taken many incredible pictures.

Tel Aviv at night

Working at a startup has been an exciting, challenging and stressful experience. Sometimes you get to experience all three emotions in the same day! Emotions aside, I am glad I took the leap almost three years ago.

Along the way, I have learned many things. Here are a few that I’d like to share:

  1. Make sure you meet the entire team. Chemistry and personalities are huge in a startup.
  2. Change is the name of the game. You probably won’t get it right the first time.
  3. Listen to your customers.

So the time has come to close this chapter and start a new one. I wish the best to everyone at Atomynet.

Posted in Career, Startups | Leave a comment

Too much fun with Apache Axis 1.3 and .NET 2.0 web services

I was recently attempting to upgrade an existing .NET 1.1 application to .NET 2.0. One of the pieces that broke unexpectedly was a call to an Apache Axis 1.3 web service. I was surprised to find out that a simple update web reference inside of Visual Studio 2005 didn’t solve the problem.

Originally, the Java web service was generated using the Eclipse Web Service Tools wizard. In this specific instance, I generated the WSDL from an existing class and let the tool do the bulk of the work for me. One of the options chosen was RPC/Encoded Style. I never encountered any issues with this setting with .NET 1.1. In my research, I discovered that this setting was not recommended.

I encountered two issues with the conversion. After I initially recompiled the .NET 2.0 client and attempted to call the web service, the application threw an exception that stated “There is an error in XML document (1, 381)”, with an inner exception stated “Item has already been added. Key in dictionary:…”. When I converted the Java Web Service to use document/literal (wrapped) style this issue went away.

The second issue I discovered was a specific method was returning a complex type that .NET 2.0 was not filling the client side object. Looking at the packet coming back with Fiddler it was clear that the data was coming back from the server, but .NET was ignoring the data. I found it strange that an exception wasn’t raised or a null value wasn’t returned. Instead, a newly created class with default values was returned. I tried numerous changes but didn’t have any luck.

More searching revealed a possible clue – a namespace mismatch. I compared the generated WSDL with the data coming back and sure enough, the response namespace didn’t match the expected WSDL namespace.

Fixing this issue was easier than expected, by using the Eclipse Web Service Tools, checking “Define custom mapping for package to namespace” and mapping the response class to the default namespace. (e.g. com.example.service.foo.obj to foo.service.example.com).

The bottom line here for making your interoperability as painless as possible between .NET 2.0 and Apache Axis 1.3 is that you should use “document/literal (wrapped)” and make sure your complex types are in the same namespace as your service.

Posted in .NET, Java, Web Services | Leave a comment