Hi Simon,
Sorry for the silence and delay to answer.
Thank you very much for the clever and heavy job you have done
regarding this problem as I can notice you are very busy besides.
Indeed, it is so clever that I not sure I understand all well and I
have some remarks and questions:
1) I have not JAXWS at my disposal and I did not even know it but I
think I get what you have done ; from my side, as my project was not
working with Tuscany, I realized a version in which I
"manually" (well in fact Eclipse/Axis did it in my place) built Java
proxies/stubs for accessing the Nursery WS but I was not able to
integrate the result with Tuscany as you have done.
Furthermore, I cannot trap the soap messages myself and need to
contact the Nursery support which is not always available.
2) Nevertheless, I feel quite as I finally did not understand nothing
about SCA when you mention not to use a promoted reference.
In my understanding, where a reference points to a service that
locates outside of the composite (domain), the reference has to be
promoted, hasn' it ? Is the explanation coming from the fact that we
indicate interface.wsdl instead of interface.java (roughly speaking
we ask Tuscany not to use the java interface details - so, it has not
to be promoted- but if the interface reference is promoted, Tuscany
uses it despite that then goes wrong? )
I guess you have tried running your example with the reference as
"not promoted" and succeeded? However, although I agree with your
remarks about resulting namepaces differences in the "promoted
reference case" (in particular "n3" that seems to have no relation
with other namespaces), I noticed that "ns5" is equal to previous
(example) "ns3" and it seems to be used in <sendSMS> block. So,
example should work, shouldn't it?
For that matter, I would like to provide you with some elements I
should have give you sooner. I am not sure they will help you but in
case ... I extract the informations below from a "Nursery platform
development guidelines for Apache Axis 1.X toolkit" document and I
followed most of them along my testing.
I hope that it will help.
Regards,
Marina.
PS: do you always set package name to the firstname of user-list
"complainer" or is it a joke? (Being frank, I have been pleasently
surprised so...)
------------------------------------------------------
excerpt from guide document
B. Development steps
1. WSDL import in the Java project under Eclipse
We use the menu File/Import...
2. Code generation with WSDL file
a) Namespaces and packages mapping
The exact namespaces depend on each enabler WSDL file.
With MDSP Stage 2a Enablers, the mappings must be defined for the
following namespace:
- http://com.osa.mdsp.enabler.sei/<Enabler>/<Version>/<Service>
- http://com.osa.mdsp.enabler.sei.eto/<Enabler>/<Version>
- http://com.osa.mdsp.enabler.sei.exception/<Enabler>/<Version>
- http://com.osa.mdsp.enabler.ecf/
Where:
- <Enabler> must be replaced by the Enabler name (example: SMSEnabler),
- <Version> must be replaced by the Enabler version (example: V1.0
for initial release, then
Vx_y for successive major releases Ð e.g. V2_0),
- <Service> must be replaced by the Enabler Service SEI name
(example: SMSSEnderSEI).
You will find the exact namespaces to map in the wsdl:definitions tag
attributes.
On the SMS Enabler, there are four namespaces to map to custom java
packages:
With MDSP Stage 2a Enablers, the mappings must be defined for the
following namespace:
- http://com.osa.mdsp.enabler.sei/SMSEnabler/V2_0/SMSSEnderSEI
- http://com.osa.mdsp.enabler.sei.eto/SMSEnabler/V2_0
- http://com.osa.mdsp.enabler.sei.exception/SMSEnabler/V2_0
- http://com.osa.mdsp.enabler.ecf/
Here is an extract of the WSDL file from the example:
<wsdl:definitions
targetNamespace="http://com.osa.mdsp.enabler.sei/SMSEnabler/V2_0/
SMSSenderSEI"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://com.osa.mdsp.enabler.sei/SMSEnabler/V2_0/
SMSSenderSEI"
xmlns:intf="http://com.osa.mdsp.enabler.sei/SMSEnabler/V2_0/
SMSSenderSEI"
xmlns:tns1="http://com.osa.mdsp.enabler.sei.exception/SMSEnabler/V2_0"
xmlns:tns2="http://com.osa.mdsp.enabler.sei.eto/SMSEnabler/V2_0"
xmlns:tns4="http://com.osa.mdsp.enabler.ecf"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
In this example, we use the following package / namespace mapping:
Namespace
Package name
http://com.osa.mdsp.enabler.sei/SMSEnabler/V2_0/SMSSenderSEI
com.osa.mdsp.csp.ena.smms.sms.enabler.sei
http://
com.osa.mdsp.enabler.ecf
com.osa.mdsp.csp.ena.enagw.ecf
http://com.osa.mdsp.enabler.sei.eto/SMSEnabler/
V2_0
com.osa.mdsp.csp.ena.smms.sms.enabler.sei.eto
http://com.osa.mdsp.enabler.sei.exception/SMSEnabler/
V2_0 com.osa.mdsp.csp.ena.smms.sms.enabler.sei.exception
b) Java code generation using Eclipse WTP wizard
With the right click over the WSDL file in Eclipse, we use the
contextual menu Web
Services/Generate Client:
We obtain the following wizard: ...
We click on the Next button and obtain the following window: ...
On this window, we select Define custom mapping for namespace to
package and click on the Next
button. The final window appears where we enter the Java packages /
Namespaces mapping:...
We then use the Finish button.
The list of Java classes being generated is detailed hereafter:
Package Java classes /
interfaces
Description
com.osa.mdsp.csp.ena.smms.sms.
enabler.sei
SMSSenderEnablerRemote_V2_0.java
Service definition interface (SMSSender Enabler)
SMSSenderEnablerRemote_V2_0Proxy.java
Implementation of the Service interface
SMSSenderEnablerRemoteService_V2_0.java Remote
interface for the SMSSender Enabler Proxy Service
SMSSenderEnablerRemoteService_V2_0Locator.java Implementation
of the SMSSender Enabler Proxy
SMSSenderEnablerRemoteSoapBinding_V2_0Stub.java Stub class that
implement the service definition interface
com.osa.mdsp.csp.ena.enagw.e
cf
EnablerException.java
EnablerException class (Business Exception). Some SOAP
Faults are encapsulated in an EnablerException.
com.osa.mdsp.csp.ena.smms.s
ms.enabler.sei.eto
SMSMessageETO.java
SMSMessage class (Business object)
SMSBinaryMessageETO.java
SMSBinaryMessage class (Business object)
com.osa.mdsp.csp.ena.smms.s
ms.enabler.sei.exception
SMSException.java
SMSException class (Business Exception). Some SOAP Faults
are encapsulated in a SMSException.
------------------------------------------------------
Le 20 juin 08 à 17:55, Simon Laws (JIRA) a écrit :
[ https://issues.apache.org/jira/browse/TUSCANY-2355?
page=com.atlassian.jira.plugin.system.issuetabpanels:comment-
tabpanel&focusedCommentId=12606805#action_12606805 ]
Simon Laws commented on TUSCANY-2355:
-------------------------------------
OK so I think I see your problem now. If I change my composite to
use a promoted reference in a similar way to your composite...
<component name="ReferenceComponent">
<implementation.java class="marina.ReferenceComponentImpl"/>
</component>
<reference name="PromotedReference" promote="ReferenceComponent/
serviceComponent">
<interface.wsdl interface="http://com.osa.mdsp.enabler.sei/
SMSEnabler/V2_0/SMSSenderSEI#wsdl.interface
(SMSSenderEnablerRemote_V2_0)" />
<binding.ws wsdlElement="http://com.osa.mdsp.enabler.sei/
SMSEnabler/V2_0/SMSSenderSEI/#wsdl.binding
(SMSSenderEnablerRemoteSoapBinding_V2_0)"
uri="http://localhost:8081/
SMSSenderEnablerRemoteV20"/>
</reference>
The the SOAP message that is sent is slightly different from the
one I say with the previous composite file.
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/
envelope/">
<soapenv:Body>
<ns3:sendSMS xmlns:ns5="http://com.osa.mdsp.enabler.sei.eto/
SMSEnabler/V2_0"
xmlns:ns4="http://com.osa.mdsp.enabler.ecf"
xmlns:ns3="http://
smssendersei.v2_0.smsenabler.com.osa.mdsp.enabler.sei/"
xmlns:ns2="http://
com.osa.mdsp.enabler.sei.exception/SMSEnabler/V2_0">
<arg0 />
<arg1>
<ns5:content>Some message</ns5:content>
<ns5:earliestDeliveryTime xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance" xsi:nil="true" />
<ns5:expiryDate xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:nil="true" />
<ns5:priority xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:nil="true" />
<ns5:recipient xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:nil="true" />
<ns5:senderAddress xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance" xsi:nil="true" />
<ns5:contentSentEncoding xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance" xsi:nil="true" />
<ns5:flash xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:nil="true" />
</arg1>
</ns3:sendSMS>
</soapenv:Body>
</soapenv:Envelope>
It clearly has a different namespace for the sendSMS element. Not
to mention different element names within that. SO the workround
for now is to not use promoted references in this scenario while we
look to see what is going wrong.
Simon
CONTINUED Need help again on binding to external web service with
login authentication
---------------------------------------------------------------------
------------------
Key: TUSCANY-2355
URL: https://issues.apache.org/jira/browse/
TUSCANY-2355
Project: Tuscany
Issue Type: Bug
Components: Java SCA Axis Binding Extension
Affects Versions: Java-SCA-1.1
Environment: Windows XP, Eclipse 3.3.2 , tuscany
incubating 1.1 , java 6
Reporter: Marina Deslaugiers
Attachments: Aspen.tcpdump, MDSP-SMSSenderEnablerSEI-
V2_0.wsdl, Support.tcpdump, WSmediawebtranslatorwebsms.composite
Hi,
As planned this morning, we have made directly test with the person
responsible of web service "Nursery" support to users.
We have detected various problems.
I attach (I hope joined files will actually be sent otherwise
please let me
know) two "sniff" files at the TCP level on communication with the
web
server "Nursery":
- The first one (see Aspen.tcpdump) corresponds to TCP
frames sent
by Tuscany that does not work
- The second one (see Support.tcpdump) corresponds to TCP
frames
sent by the Nursery support -after modification (correction) of
the Tuscany
frames- that does work
Following are the differences and explanations reported by the person
responsible for the Nursery WS support:
1) the namespaces used in SOAP BODY are not in conformity
with the
WSDL. Indeed, one can find the value "http://translatewithsms" as
the
"pseudo" namespace _ns_. Replacing that value with the one
defined in the
WSDL say "http://com.osa.mdsp.enabler.sei/SMSEnabler/V2_0/
SMSSenderSEI",
the SOAP frame works
Note that I realized that "translatewithsms" is the package name
of my
Eclipse project (containing in particular java client, interfaces
etc.
files).
2) at HTTP level, the web service in the Nursery is
protected by
"Basic Authentication" ; but the "Authorization" header is not
sent by
Tuscany
(NB: at the current state, we cannot know whether it is
actually a
problem EXCEPT if Tuscany uses pre-emptive authentication mecanisms
3) Note that Tuscany sends the authentication
credentials(user/password) using WS-Security that is not taken
into account
by the Nursery platform. This is not a problem however,
credentials are not
operate.
NB: tcpdump files can be opened with WireShark http://
www.wireshark.org/download.html
I might be responsible for these problems as I have probably made
mistakes
in coding (at least regarding the policy expression). Please can
you help me
in correcting.
Thanks you very much.
Regards,
Marina.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.