Here's the gory details:
I have a webservice written in Java running under
Websphere 6.0.2.1.
The webservice employs WS-Security, namely requiring a
Username token in the SOAP header. Any SOAP requests received without the
proper WS-Security token will be rejected. The Username token is validated
against an external LDAP database.
I need to generate "sample" client applications in a
variety of platforms to illustrate to our customers how to interact with the
webservice.
I have generated a .NET C# webservice client. It
works beautifully.
I have generated a J2EE Java webservice client.
It works beautifully.
I have generated a J2SE Java webservice client, but I
haven't gotten that working yet.
I need to generate ... wait for it ... an RPG
client. RPG is an old procedural language that runs on the AS/400 platform
made by IBM. The operating system is OS/400, nothing like Linux, nothing
like Windows.
RPG toolset is very very limited. But just like
the .NET framework, RPG can call programs written in other languages, as lng as
they are compiled on the AS/400.
IBM offers a product called "XML Toolkit for iSeries"
(another name for AS/400). Part of that toolkit is a product called "WSCC
- Web Services Client for C++". It permits you to generate a C++ client
which will run on the AS/400.
The WSCC product is based on Axis C++, that is no
secret. If IBM has made some custom changes, I can't see any. The
documentation for Axis C++ seem to be just fine for me.
I intend to get the AS/400 C++ client working, and then
call it from an RPG program. This is an acceptable
direction.
When I use the C++ client without inserting any
security tokens, the service answers me with "Missing SOAP elements in header",
and this is what I expect.
So I made a C++ handler, and I have it insert the
proper WS-Security tokens into the SOAP header. To do so, I had to
properly modify the AXISCPP.CONF file, and the WSDD file. I know I got
these right because when I got them wrong I received errors stating that the
handler class could not be found, or the WSDD could not be found, or the
AXISCPP.CONF could not be found.
I've compared the C++ SOAP request against the .NET
SOAP request (which works), and they both seem to be equivalent. I can
compare these by using a TCP/IP monitor supplied by
Websphere.
The first request from the C++ client immediately
generates the "AxisException 67" on the client side. No errors in the
Websphere server log. No other errors in the job log or on the console on
the client side.
Is ANYONE else in this crazy world trying to do this on
an AS/400? I bet not.
From: John Hawkins [mailto:[EMAIL PROTECTED]
Sent: Friday, March 24, 2006 8:41 AM
Subject: RE: WS-I Basic Security Profile
Like - what are you doing. Is this is the client or server?
Are you creating a service, calling a method.
Have you managed to call the service by this time - etc. etc. etc.
When using AxisCPP I am receiving:
AxisExeption: 67
