Posts

Showing posts from January, 2006

Oracle Application Server 10g Release 3

The 10.1.3.0 has been going live over the weekend. Here are few link worth adding to your bookmark shortlist: Documentation, Web services APIs Javadoc, and HowTo's.

If you did not get the bits yet, here they are. Download version 10.1.3 of Oracle Application Server 10g and Oracle JDeveloper 10g.

Happy coding!
-Ecco

JDeveloper 10gR3 and Web Services

Image
If you are planing on developing Web Services on the Oracle stack, using the latest 10.1.3 preview available, I have a couple of tips for you:
Once you are done with the HelloWorld sample service, consider moving from the wizard-based development model to the ant-based scripting on top of WSA - the underlying Web Service Assembler utility.If you have decided to use the CLI [Command Line Interface] mode to build your simple services, just because an IDE is not for you, I have the same recomendation to make: consider moving from the CLI base model to the ANT base development environment.Here are my main reasons for that:JDeveloper's support for annotation (JSR-181) is not intuitive as you have to joggle between code changes and re-enter the wizard while WSA does give you a more predictible development process. Note that you need JDK 1.5.x in order to leveareage annotations - It's the only way to handle SOAP header in bottom-up scenario, if you need to have a rational for using an…

MS Office 2003 - Generated code with no parameter

In the process of getting my Web services integrated with the Office 2003 desktop suite, I run into another issue, which is again anoing. Even with a WSDL that adhers to WS-I BP1.x, the experience, out off the box is not that snooth.

The sympthome: the VBA code generated for each operation, do not have any parameter or return value. Here is a simple example with 2 operations.

Public Sub wsm_getVersion()
...
Public Sub wsm_echoString()
...

At first, this code looks fine, and there is no error message, warning, or hint of any kind that can be used to figure that the code generated is not functional. Before to delve into the WSDL and Schema definition, here is the code that one would have expected.

Public Function wsm_getVersion() As String
...
Public Function wsm_echoString(ByVal str_input As String) As String
...

The problem: The wizard is not able to process the type definition of any top-level element, unless the type definition is inlined. Here is the sample output element/type defition for th…

Web Services Design Tips - SOAPAction

Recently, I have been asked why a service was not working without the infamous SOAPAction, and I figured out I should try to explain it, one for all. Let me know if it works for you.
As the SOAPAction is transport specific -an HTTP header field, you should try to avoid it's use when authoring WSDL files for your new services, especially if you plan to use other transports for the same service. There are only a few usecases where you really need it: it's when you are using 'bare-style' document-literal binding or overloaded method (if your language of choice permit it).
The Key to this problem is to understand the relationship between the WSDL and the wire format, and to realize that the name of the wsdl:operation is not necessary present on the wire. Let's take an example to clarify this point. Here is a simple JAVA interface, that will be our samle code today:
Figure 1. Sample JAVA SEI
public interface SEI extends java.rmi.Remote {
public String lookupPhone(String eid)