Dear all,
I was able to reproduce Scott's problem and I identified
OMElementImpl#getText as the culprit: this method uses a particular
inefficient way to do string concatenations. By using a StringBuffer
(as you learn in any introductory course on Java...) I was able to
reduce processing time from about 30s to 0.1s. I will open a JIRA
issue (if there is none yet) and submit a patch.
Regards,
Andreas
On 14 Jan 2008, at 21:14, Scott Malinowski wrote:
Philipp,
I tried the CDATA already and it didn't work. Axis2 just encoded it
right along with the XHTML.
I agree with your comments about the gracefulness (or rather
gracelessness) of sending XHTML as a string in a SOAP message. I
need a cross-platform way of returning XHTML documents and a web
service seemed like the best approach. Mainly because of how the web
service is called. The web service needs to receive complex data
types, which are easily built when constructed via nested elements
in XML. Therefore, in my limited knowledge of web technologies, web
services seemed best and we are already calling a web service in a
different organization using SOAP so that is where I have been
concentrating my efforts. I am, however, always open to better ideas
and solutions. I am unaware of RESTful web services but will check
it out.
Thanks a lot!
Scott
----- Original Message ----
From: Philipp Leitner <[EMAIL PROTECTED]>
To: [email protected]
Sent: Monday, January 14, 2008 2:00:33 PM
Subject: Re: Process SOAP message containg XHTML
Probably including XHTML document in a CDATA section helps, i.e.
instead
of passing back
<html>
..
</html>
you pass back
<![CDATA[
<html>
..
</html>
]]>
(on client-side you would obviously have to strip the CDATA tags
again).
On a sidenote, I am not sure if your design (Web service that
returns a
XHTML response encoded as String) is so beautiful. Have you ever
though
about writing a RESTful Web service without SOAP, that just returns
XML
or XHTML representations? Would seem like a simpler and more
understandable solution to your challenges...
/philipp
Scott Malinowski schrieb:
> Paul,
>
> Thanks. I saw MTOM during my research but I am very new to web
services
> and SOAP and I am finding some of these other features (including
MTOM)
> a bit daunting. Mostly, I need to make sure the web service I
write can
> be accessed not only by my Java client but also by our sister
> application, which is written in PowerBuilder. It looks like you
have to
> enable MTOM on the client but I am unable to find how that can be
done
> in PowerBuilder. It appears you have to have PowerBuilder use .NET
> instead of EasySOAP, which is PowerBuilder's implementation of SOAP.
> Sadly, my organization will not allow .NET so I am limited. This
is why
> I am using plain vanilla SOAP. The client creates a SOAP message and
> calls the service. My web service doesn't do anything with SOAP
itself.
> It is just a Java class which generates XHTML and returns it. The
SOAP
> container on the server (Axis2) takes care of converting the
string to a
> SOAP message response. Somewhere in that process of taking my
string and
> converting it to a SOAP message is where it encodes it.
>
> I did try changing the wsdl to have the return type be
base64Binary but
> that did not keep the XHTML from being encoded. I was hoping there
would
> be a simple change I can make to the wsdl to tell SOAP to ignore the
> content of the return and don't encode it but maybe there isn't an
easy way.
>
> I will look further into MTOM. Maybe I can at least get it working
via a
> Java client. In the meantime, any other ideas from you or anyone
else
> would be greatly appreciated!
>
> Thanks,
> Scott
>
> ----- Original Message ----
> From: Paul Fremantle <[EMAIL PROTECTED]>
> To: [email protected]
> Sent: Monday, January 14, 2008 12:07:56 PM
> Subject: Re: Process SOAP message containg XHTML
>
> One option would be to treat the data as a binary message and use
MTOM
> to send it. This should reduce the XML processing and will also
avoid
> any encoding issues.
>
> Paul
>
> On Jan 14, 2008 3:36 PM, Scott Malinowski <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
> >
> > Hello,
> >
> > This is probably a SOAP question more than an AXIS2 question. If
> there is a
> > better place to post my question please let me know.
> >
> > I have written a SOAP web service using AXIS2. It returns XHTML
as a
> string.
> > The problem is on the client side. It takes several minutes to
> process the
> > response, which is only a few hundred kilobytes. My research on
this has
> > pointed me to the fact that the XHTML within the SOAP response
has become
> > encoded (e.g. '<' has become '<') and that it is taking
awhile for
> this
> > data to be converted back. It only takes a second or so for the
client to
> > send the request and receive a response. The time delay comes
when I call
> > getSOAPBody() on the client. I have tried wrapping the XHTML in
> '<<![CDATA['
> > and ']]>' but to no avail (it is still encoded in the SOAP
response).
> How do
> > I return XHTML so that Axis2 and/or SOAP ignores the XHTML when
> building the
> > response and leaves it unencoded?
> >
> > Thanks,
> > Scott
> >
> > ________________________________
> > Looking for last minute shopping deals? Find them fast with
Yahoo!
> Search.
>
>
>
> --
> Paul Fremantle
> Co-Founder and VP of Technical Sales, WSO2
> OASIS WS-RX TC Co-chair
>
> blog: http://pzf.fremantle.org
> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>
> "Oxygenating the Web Service Platform", www.wso2.com <http://www.wso2.com
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
>
>
>
>
------------------------------------------------------------------------
> Be a better friend, newshound, and know-it-all with Yahoo! Mobile.
Try
> it now.
>
<http://us.rd.yahoo.com/evt=51733/*http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
> >
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Be a better friend, newshound, and know-it-all with Yahoo! Mobile.
Try it now.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]