I removed this check please have a look at with a nightly build. thanks, Amila.
On Thu, Oct 29, 2009 at 6:47 PM, srini.maran <[email protected]> wrote: > > Hi Amila. > > Thanks for your response. > > I don't get it "Can you check this by using a response get without > rampart? ". Do you mean to say run > the client without Rampart enabled? or you are talking different. > > My client and server code is working fine without Rampart. It's failing > when i enable Rampart. Basically, > it's failing in the client code when stub generates SOAP header with auth > info(using policy file). It could be same issue in > server side too. > > Below is my client code: > > HubServiceStub stub = new > HubServiceStub("http://localhost:8180/........"); > ServiceClient client = stub._getServiceClient(); > > Options options = client.getOptions(); > options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, > loadPolicy("plain-policy-client.xml")); > options.setUserName("libuser"); > options.setPassword("books"); > client.engageModule("rampart"); > > Channel2 chl1 = new Channel2(); > // popultes the inpuit object > chl1.setAdmin("....") > ........ > ......... > MessageE resp = stub.hubFeed(chl1); --> throws exception. > > I am getting the exception when i invoke the service hubFeed. > > I am able to successfully test the Rampart & IBM article WS-security > sample apps with no issue. It's a > simple service with no complex schema. > > Please let me know if you need any further details. > > I will really appreciate you on helping me to solve this issue. > > Thanks > Srini > > > > Amila Suriarachchi wrote: > > > > On Wed, Oct 28, 2009 at 1:31 AM, Andreas Veithen > > <[email protected]>wrote: > > > >> Srini, > >> > >> Here is the explanation of this issue, as I see it: > >> > >> - When WS-Security is disabled, ADB streams the XML data directly to > >> the wire, using an XMLStreamWriter from Woodstox (which is indeed > >> wrapped to handle MTOM, but this is not important). No problem here > >> because the XMLStreamWriter from Woodstox conforms to StAX and ADB in > >> Axis2 1.5 uses the XMLStreamWriter correctly (up to a minor issue > >> fixed in trunk). > >> > >> - When WS-Security is enabled, the XML can't be streamed to the wire > >> directly because Rampart needs to post-process the response. ADB > >> handles this by using an XMLStreamWriter implementation that will > >> build an Axiom (see AXIS2-4413). This is the MTOMAwareOMBuilder that > >> you see. > >> > >> The problem is that MTOMAwareOMBuilder is not a correct implementation > >> of XMLStreamWriter. While the sequence of events produced by ADB is > >> correct (otherwise it would have failed with Woodstox), > >> MTOMAwareOMBuilder thinks that there is a collision between two > >> namespace bindings. The code in this class at least has two issues: > >> > >> - writeStartElement, writeAttribute, writeNamespace and > >> writeDefaultNamespace may all modify the namespace context (by calling > >> getOMNamespace). This is incorrect: according to the specs, only > >> setPrefix and setDefaultNamespace modify the namespace context of the > >> XMLStreamWriter. > >> > > > > ADB write element method looks like this. > > > > xmlWriter.writeStartElement(prefix, localPart, namespace); > > xmlWriter.writeNamespace(prefix, namespace); > > xmlWriter.setPrefix(prefix, namespace); > > > > does the spec specify any order? > > > > > > > >> > >> - The namespace context is not scoped. Normally, the namespace > >> bindings declared by setPrefix and setDefaultNamespace only remain > >> visible in the current element. This is not the case (see the usage of > >> a simple HashMap in MTOMAwareOMBuilder and OMStreamNamespaceContext. > >> > >> In your case, the problem is probably caused by the second issue: > >> MTOMAwareOMBuilder probably believes that there is a collision between > >> a newly declared namespace binding and an existing one that actually > >> should be out of scope. > >> > > > > can you check this by using a response get without rampart? if so we can > > remove this check. > > > > thanks, > > Amila. > > > >> > >> Regards, > >> > >> Andreas > >> > >> On Tue, Oct 27, 2009 at 19:53, srini.maran <[email protected]> > wrote: > >> > > >> > Hi Axis User. > >> > > >> > I am getting the below error in the client code when I try > >> to > >> > invoke the service with WS-Security Rampart. I am using Asix2-1.5 and > >> > Rampart-1.4 > >> > > >> > XMLStreamException "the prefix ==> Already exists for > >> namespace > >> > in “urn:com1” " > >> > when WS-Security Rampart is engaged for Axis 2 web-services > >> > > >> > Attached are the error log file (stacktrace) & client code. > I > >> am > >> > using XML import in the schema. I am able to successfully test the > >> Rampart > >> > policy samples without any issue. > >> > > >> > I am getting error when I add rampart in our existing > service > >> > which has complex schema. Has this error occurred due to xml import? > >> > > >> > Below is my XSD hierarchy > >> > > >> > service.wsdl -- > >> > > >> > <wsdl:types> > >> > <xsd:import namespace="urn:chl" > >> > schemaLocation="../schema/hub_channel.xsd" /> - in > >> > <xsd:import namespace="urn:msg" > >> > schemaLocation="../schema/hub_message.xsd" /> - out > >> > </wsdl:types> > >> > > >> > > >> > hub_channel.xsd(urn:chl) imports the below scheams. > >> > <xsd:import namespace="urn:com1" > >> > schemaLocation="hub_common.xsd" /> > >> > <xsd:import namespace="urn:usr" > >> > schemaLocation="hub_user.xsd" /> > >> > > >> > hub_message.xsd(urn:msg) import > >> > <xsd:import namespace="urn:com1" > >> > schemaLocation="hub_common.xsd" /> > >> > > >> > Can you please help on this issue? I will really appreciate > >> you. > >> > I have been trying for last 1 week to resolve it. I couldn’t resolve > >> it. > >> > > >> > I searched in Axis User, people encountered the same. I > >> don't > >> > think it's resolved. > >> > Here is the link: > >> > http://www.mail-archive.com/[email protected]/msg40661.html > >> > In the forum, one of the user Richard mentioned Rampart > devs > >> > would like to acknowledge the > >> > problem and maybe even fix it > >> > > >> > One user debugged the issue and added the below comments in > >> the > >> > forum > >> > > >> > "I debugged the code and observed that, in the serialize > >> method > >> > of the XML node POJO > >> > (generated by WSDL2JAVA), the "MTOMAwareXMLStreamWriter > >> > xmlWriter" parameter gets an > >> > instance of MTOMAwareOMBuilder if WS-Security is enabled. > >> > Whereas, without WS-Security it gets an instance of > >> > > >> > org.apache.axis2.databinding.utils.writer.MTOMAwareXMLSerializer which > >> uses > >> > MTOMXMLStreamWriter which in turn uses > >> > com.ctc.wstx.sw.SimpleNsStreamWriter to > >> > serialize the response. > >> > I also tried using AXIS 1.4 without any success. Any idea > >> how > >> > can this problem can be solved? > >> > Is there a way to let Rampart know which serializer should > >> be > >> > used? Am I missing any > >> > configuration details of Rampart? " > >> > > >> > Thanks > >> > Srini Maran > >> > > >> > http://www.nabble.com/file/p26083056/Error1.rtf Error1.rtf > >> > http://www.nabble.com/file/p26083056/Client.rtf Client.rtf > >> > -- > >> > View this message in context: > >> > http://www.nabble.com/-Axis2--with-Rampart----XMLStreamException-%22the-prefix-%3D%3D%3E-Already-exists-for-namespace-tp26083056p26083056.html > >> > Sent from the Axis - User mailing list archive at Nabble.com. > >> > > >> > > >> > > > > > > > > -- > > Amila Suriarachchi > > WSO2 Inc. > > blog: http://amilachinthaka.blogspot.com/ > > > > > > -- > View this message in context: > http://www.nabble.com/-Axis2--with-Rampart----XMLStreamException-%22the-prefix-%3D%3D%3E-Already-exists-for-namespace-tp26083056p26112874.html > Sent from the Axis - User mailing list archive at Nabble.com. > > -- Amila Suriarachchi WSO2 Inc. blog: http://amilachinthaka.blogspot.com/
