From java-dev-return-97003-archive-asf-public=cust-asf.ponee.io@axis.apache.org Fri Oct 5 11:09:20 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 2D200180649 for ; Fri, 5 Oct 2018 11:09:19 +0200 (CEST) Received: (qmail 15581 invoked by uid 500); 5 Oct 2018 09:09:18 -0000 Mailing-List: contact java-dev-help@axis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@axis.apache.org Delivered-To: mailing list java-dev@axis.apache.org Received: (qmail 15571 invoked by uid 99); 5 Oct 2018 09:09:18 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 05 Oct 2018 09:09:18 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 5E6DA1A048A for ; Fri, 5 Oct 2018 09:00:09 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.009 X-Spam-Level: X-Spam-Status: No, score=0.009 tagged_above=-999 required=6.31 tests=[RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id 0WpJzsQyfl_Y for ; Fri, 5 Oct 2018 09:00:06 +0000 (UTC) Received: from mail.am-soft.de (mail.am-soft.de [83.218.36.120]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 4469C5F48E for ; Fri, 5 Oct 2018 09:00:06 +0000 (UTC) Received: from mail.am-soft.de (localhost [127.0.0.1]) by mail.am-soft.de (Postfix) with ESMTP id E5506BB7506 for ; Fri, 5 Oct 2018 10:59:59 +0200 (CEST) Envelope-To: java-dev@axis.apache.org Received: from tschoening-nb.fritz.box (dslb-094-223-125-023.094.223.pools.vodafone-ip.de [94.223.125.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail.am-soft.de (Postfix) with ESMTPSA id A3B4ABB7504 for ; Fri, 5 Oct 2018 10:59:58 +0200 (CEST) Date: Fri, 5 Oct 2018 10:59:56 +0200 From: =?utf-8?Q?Thorsten_Sch=C3=B6ning?= Organization: AM-SoFT IT-Systeme Message-ID: <404339224.20181005105956@am-soft.de> To: java-dev@axis.apache.org Subject: Re: [AXIS2] Throttle upload bandwidth during sending SOAP messages In-Reply-To: <1845956810.20180611134433@am-soft.de> References: <7110268557.20180607174206@am-soft.de> <859542264.20180607185833@am-soft.de> <1845956810.20180611134433@am-soft.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------0170F91AA3F84017A" X-AV-Checked: ClamAV using ClamSMTP ------------0170F91AA3F84017A Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Guten Tag Thorsten Sch=C3=B6ning, am Montag, 11. Juni 2018 um 13:44 schrieben Sie: > Not sure if there's an easier way, better ideas welcome. :-) Time to share my experiences: I'm stuck on some old Axis2 1.6.2 currently, which seems to use MultiThreadedHttpConnectionManager, for which I didn't find how to provide it with a connection factory to be able to create limiting OutputStreams at all. Maybe I missed something somewhere... Nevertheless, at least for my use case I think I have an easier approach: I need to upload only one file currently and am using SOAP with attachments to not need to encode Base64 and such. If I understood correctly, Axis2 demands a DataHandler in those cases and those can be created based on some DataSource, which itself wraps some InputStream and that actually wraps the data to upload. So what I simply did was creating a limiting InputStream around my data to upload, wrapped that into a DataSource, wrapped that into a DataHandler and provided that to Axis2. To let Axis2 not consume too much memory during creation of the request, it needs to be set to use chunked transfers.[1] In the end, Axis2 is reading somewhat small packages from my InputStream and writing those directly to the server and because it can only send what it read, I'm limiting upload bandwidth that way. Care needs to be taken regarding the limiter used, I started with Guava RateLimiter and ran into problems[1] when using it in Inputstream.read with only reading one byte. Apaches TimedSemaphore worked better even in those situations. Limiting one byte only instead of individual packets might be unnecessary, though. Attaching some PoC in case anyone is interested. Of course it's not strictly limiting the output, but good enough for what I need currently. :-) [1]: http://mail-archives.apache.org/mod_mbox/axis-java-user/201809.mbox/<1= 486821759.20180923202008%40am-soft.de> [2]: https://stackoverflow.com/a/52626754/2055163 Mit freundlichen Gr=C3=BC=C3=9Fen, Thorsten Sch=C3=B6ning --=20 Thorsten Sch=C3=B6ning E-Mail: Thorsten.Schoening@AM-SoFT.de AM-SoFT IT-Systeme http://www.AM-SoFT.de/ Telefon...........05151- 9468- 55 Fax...............05151- 9468- 88 Mobil..............0178-8 9468- 04 AM-SoFT GmbH IT-Systeme, Brandenburger Str. 7c, 31789 Hameln AG Hannover HRB 207 694 - Gesch=C3=A4ftsf=C3=BChrer: Andreas Muchow ------------0170F91AA3F84017A Content-Type: application/octet-stream; name="LimitingDs.java" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="LimitingDs.java" cGFja2FnZSBkZS5hbV9zb2Z0LmRvY2JlYW0ucmF3LnNlcnZlci53b3JrZXIubmV3X2pvYi5s aW1pdGVyOw0KDQppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCmltcG9ydCBqYXZhLmlv LklucHV0U3RyZWFtOw0KaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOw0KDQppbXBvcnQg amF2YXguYWN0aXZhdGlvbi5EYXRhU291cmNlOw0KDQppbXBvcnQgZGUuYW1fc29mdC51dGls LlN0cmluZ1V0aWw7DQoNCi8vIFRPRE8gZG9jcw0KcHVibGljIGNsYXNzIExpbWl0aW5nRHMg aW1wbGVtZW50cyBEYXRhU291cmNlDQp7DQoJLy8gVE9ETyBkb2NzDQoJcHJpdmF0ZSBmaW5h bCBMaW1pdGluZ0lzIGlucHV0U3RyZWFtOw0KDQoJLy8gVE9ETyBkb2NzDQoJcHJpdmF0ZSBm aW5hbCBTdHJpbmcgbmFtZTsNCg0KCS8vIFRPRE8gZG9jcw0KCXByaXZhdGUgZmluYWwgU3Ry aW5nIGNvbnRlbnRUeXBlOw0KDQoJLy8gVE9ETyBkb2NzDQoJcHVibGljIExpbWl0aW5nRHMo CUlucHV0U3RyZWFtCWlucHV0U3RyZWFtLA0KCQkJCQkJU3RyaW5nCQluYW1lLA0KCQkJCQkJ U3RyaW5nCQljb250ZW50VHlwZSwNCgkJCQkJCWludAkJCXBlcm1pdHNQZXJTZWMxaykNCgl7 DQoJCXRoaXMuaW5wdXRTdHJlYW0JPSBuZXcgTGltaXRpbmdJcyhpbnB1dFN0cmVhbSwgcGVy bWl0c1BlclNlYzFrKTsNCgkJdGhpcy5uYW1lCQkJPSBTdHJpbmdVdGlsLnJlcU5vbkVtcHR5 KG5hbWUsCQkJIm5hbWUiKTsNCgkJdGhpcy5jb250ZW50VHlwZQk9IFN0cmluZ1V0aWwucmVx Tm9uRW1wdHkoY29udGVudFR5cGUsCSJjb250ZW50VHlwZSIpOw0KCX0NCg0KCUBPdmVycmlk ZQ0KCXB1YmxpYyBJbnB1dFN0cmVhbSBnZXRJbnB1dFN0cmVhbSgpIHRocm93cyBJT0V4Y2Vw dGlvbg0KCXsNCgkJcmV0dXJuIHRoaXMuaW5wdXRTdHJlYW07DQoJfQ0KDQoJQE92ZXJyaWRl DQoJcHVibGljIFN0cmluZyBnZXROYW1lKCkNCgl7DQoJCXJldHVybiB0aGlzLm5hbWU7DQoJ fQ0KDQoJQE92ZXJyaWRlDQoJcHVibGljIFN0cmluZyBnZXRDb250ZW50VHlwZSgpDQoJew0K CQlyZXR1cm4gdGhpcy5jb250ZW50VHlwZTsNCgl9DQoNCglAT3ZlcnJpZGUNCglwdWJsaWMg T3V0cHV0U3RyZWFtIGdldE91dHB1dFN0cmVhbSgpIHRocm93cyBJT0V4Y2VwdGlvbg0KCXsN CgkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJTdG9yaW5nL3dy aXRpbmcgZGF0YSBpc24ndCBzdXBwb3J0ZWQuIik7DQoJfQ0KfQ0K ------------0170F91AA3F84017A Content-Type: application/octet-stream; name="LimitingIs.java" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="LimitingIs.java" cGFja2FnZSBkZS5hbV9zb2Z0LmRvY2JlYW0ucmF3LnNlcnZlci53b3JrZXIubmV3X2pvYi5s aW1pdGVyOw0KDQppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCmltcG9ydCBqYXZhLmlv LklucHV0U3RyZWFtOw0KaW1wb3J0IGphdmEudXRpbC5PYmplY3RzOw0KaW1wb3J0IGphdmEu dXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ow0KDQppbXBvcnQgb3JnLmFwYWNoZS5jb21tb25z LmxhbmczLmNvbmN1cnJlbnQuVGltZWRTZW1hcGhvcmU7DQppbXBvcnQgb3JnLnNsZjRqLkxv Z2dlcjsNCmltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCg0KLy8gVE9ETyBkb2Nz DQpjbGFzcyBMaW1pdGluZ0lzIGV4dGVuZHMgSW5wdXRTdHJlYW0NCnsNCglwcml2YXRlIHN0 YXRpYyBmaW5hbCBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoTGlt aXRpbmdJcy5jbGFzcyk7DQoNCgkvLyBUT0RPIGRvY3MNCglwcml2YXRlIGZpbmFsIElucHV0 U3RyZWFtIGlucHV0U3RyZWFtOw0KDQoJLy8gVE9ETyBkb2NzDQoJcHJpdmF0ZSBmaW5hbCBU aW1lZFNlbWFwaG9yZSBsaW1pdGVySWY7DQoNCgkvLyBUT0RPIGRvY3MNCgkvLyBhbHdheXMg dXNpbmcgYSBsaW1pdGVyIGlzIHNsb3dlciB0aGFuIG5vdCB0byB1c2UgYW55IGlmIG5vdCBu ZWVkZWQ6IH4xMzAtMTQwIE1CaXQgdnMuIDEwMC0xMTAgTUJpdCBhdCBoYm9ncy1uYg0KCS8v IEd1YXZhIFJhdGVMaW1pdGVyIGZhaWxzOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1 ZXN0aW9ucy81MjYxMTE0OC93aHktZG9lc250LWd1YXZhLXJhdGVsaW1pdGVyLWxpbWl0LWZv ci10b28tbGFyZ2UtcGVybWl0cy1wZXItc2Vjb25kLWFueW1vcmUNCglwcml2YXRlIFRpbWVk U2VtYXBob3JlIG5ld0xpbWl0ZXJJZihpbnQgcGVybWl0c1BlclNlYzFrKQ0KCXsNCgkJaWYg KHBlcm1pdHNQZXJTZWMxayA8PSAwKQ0KCQl7DQoJCQlyZXR1cm4gbnVsbDsNCgkJfQ0KDQoJ CXJldHVybiBuZXcgVGltZWRTZW1hcGhvcmUoCTEsIFRpbWVVbml0LlNFQ09ORFMsDQoJCQkJ CQkJCQlwZXJtaXRzUGVyU2VjMWsgKiAxMDI0KTsNCgl9DQoNCgkvLyBUT0RPIGRvY3MNCglw cml2YXRlIHZvaWQgc2h1dGRvd25MaW1pdGVySWYoKQ0KCXsNCgkJaWYgKHRoaXMubGltaXRl cklmID09IG51bGwpDQoJCXsNCgkJCXJldHVybjsNCgkJfQ0KDQoJCXRoaXMubGltaXRlcklm LnNodXRkb3duKCk7DQoJfQ0KDQoJLy8gVE9ETyBkb2NzDQoJcHJpdmF0ZSB2b2lkIGFxdWly ZUxpbWl0SWYoKQ0KCXsNCgkJaWYgKHRoaXMubGltaXRlcklmID09IG51bGwpDQoJCXsNCgkJ CXJldHVybjsNCgkJfQ0KDQoJCXRyeQ0KCQl7DQoJCQl0aGlzLmxpbWl0ZXJJZi5hY3F1aXJl KCk7DQoJCX0NCgkJY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpDQoJCXsNCgkJCWxv Z2dlci53YXJuKCJMaW1pdGVyIGludGVycnVwdGVkIHRvbyBlYXJseSwgY29udGludWVpbmcu IiwgZSk7DQoJCX0NCgl9DQoNCgkvLyBUT0RPIGRvY3MNCglMaW1pdGluZ0lzKAlJbnB1dFN0 cmVhbQlpbnB1dFN0cmVhbSwNCgkJCQlpbnQJCQlwZXJtaXRzUGVyU2VjMWspDQoJew0KCQl0 aGlzLmlucHV0U3RyZWFtCT0gT2JqZWN0cy5yZXF1aXJlTm9uTnVsbChpbnB1dFN0cmVhbSwg Ik5vIGlucHV0IHN0cmVhbSBnaXZlbi4iKTsNCgkJdGhpcy5saW1pdGVySWYJCT0gdGhpcy5u ZXdMaW1pdGVySWYocGVybWl0c1BlclNlYzFrKTsNCgl9DQoNCglAT3ZlcnJpZGUNCglwdWJs aWMgaW50IGF2YWlsYWJsZSgpIHRocm93cyBJT0V4Y2VwdGlvbg0KCXsNCgkJcmV0dXJuIHRo aXMuaW5wdXRTdHJlYW0uYXZhaWxhYmxlKCk7DQoJfQ0KDQoJQE92ZXJyaWRlDQoJcHVibGlj IHZvaWQgY2xvc2UoKSB0aHJvd3MgSU9FeGNlcHRpb24NCgl7DQoJCXRoaXMuaW5wdXRTdHJl YW0uY2xvc2UoKTsNCgkJdGhpcy5zaHV0ZG93bkxpbWl0ZXJJZigpOw0KCX0NCg0KCUBPdmVy cmlkZQ0KCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBtYXJrKGludCByZWFkbGltaXQpDQoJ ew0KCQl0aGlzLmlucHV0U3RyZWFtLm1hcmsocmVhZGxpbWl0KTsNCgl9DQoNCglAT3ZlcnJp ZGUNCglwdWJsaWMgYm9vbGVhbiBtYXJrU3VwcG9ydGVkKCkNCgl7DQoJCXJldHVybiB0aGlz LmlucHV0U3RyZWFtLm1hcmtTdXBwb3J0ZWQoKTsNCgl9DQoNCglAT3ZlcnJpZGUNCglwdWJs aWMgaW50IHJlYWQoKSB0aHJvd3MgSU9FeGNlcHRpb24NCgl7DQoJCS8vIE5vdCBzdXJlIGlm IGl0J3MgYmV0dGVyIHRvIGhhbmRsZSB0aGlzIGhlcmUgb3IgaW4gdGhlIG1ldGhvZCByZWFk aW5nIGJsb2NrcyBpbnN0ZWFkLiBJDQoJCS8vIGRvbid0IGhhdmUgY29udHJvbCBvdmVyIHRo ZSBzaXplIG9mIHRob3NlIGJsb2NrcywgYnV0IGVhY2ggb25lIG9mIHRob3NlIHdvdWxkIGJl IHRoZQ0KCQkvLyBsZWFzdCBhbW91bnQgb2YgZGF0YSBwZXJtaXR0YWJsZSwgd2hpY2ggbWln aHQgcmVzdWx0IGluIGJ1cnN0cyBpbiBjYXNlIG9mIGxhcmdlIGJsb2Nrcw0KCQkvLyBpbnN0 ZWFkIG9mIG5vcm1hbGl6ZWQgZGlzdHJpYnV0aW9uIG9mIGluZGl2aWR1YWwgYnl0ZXMgb3Zl ciB0aW1lLiBHdWF2YSBSYXRlTGltaXRlciBlLmcuDQoJCS8vIGluaXRpYWxseSBncmFudHMg YSBibG9jayBvZiAxMDAgTUIgYW5kIGEgc3Vic2VxdWVudCBibG9jayBuZWVkcyB0byB3YWl0 IHVudGlsIHRoZSBsaW1pdA0KCQkvLyBpcyBhdmFpbGFibGUgYWdhaW4sIHJlc3VsdGluZyBp biAxMDAgTUIgcGVybWl0dGVkIGF0IG9uY2UgYWdhaW4uIEkgd291bGQgbGlrZSB0byBoYXZl IGENCgkJLy8gc3RhYmxlIHJhdGUgb2Ygc29tZSBLaUIvcyBhbHdheXMgaW5zdGVhZC4NCgkJ Ly8NCgkJLy8gT1RPSCwgd2UgZG9uJ3QgbGltaXQgc2VuZGluZyB0aGUgb3V0cHV0IGRpcmVj dGx5LCBvbmx5IHJlYWRpbmcgdGhlIGRhdGEgdG8gc2VuZCwgd2hpY2gNCgkJLy8gaW5kaXJl Y3RseSBsaW1pdHMgc2VuZGluZyBpdC4gQnV0IHdob2V2ZXIgYWN0dWFsbHkgc2VuZHMgdGhl IGRhdGEsIHJlYWRzIGJsb2NrcyBmcm9tIHVzDQoJCS8vIG1vc3QgbGlrZWx5LiBTbyB3ZSBs aW1pdCBhdCBhIHZlcnkgbG93IGxldmVsIHdpdGggcG9zc2libHkgbG90cyBvZiBvdmVyaGVh ZCBhbmQgcGVybWl0DQoJCS8vIGJsb2NrcyBvZiBzb21lIHVua25vd24gc2l6ZSBhbnl3YXk/ DQoJCXRoaXMuYXF1aXJlTGltaXRJZigpOw0KDQoJCXJldHVybiB0aGlzLmlucHV0U3RyZWFt LnJlYWQoKTsNCgl9DQoNCglAT3ZlcnJpZGUNCglwdWJsaWMgc3luY2hyb25pemVkIHZvaWQg cmVzZXQoKSB0aHJvd3MgSU9FeGNlcHRpb24NCgl7DQoJCXRoaXMuaW5wdXRTdHJlYW0ucmVz ZXQoKTsNCgl9DQp9DQo= ------------0170F91AA3F84017A Content-Type: application/octet-stream; name="kernsystem.java" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="kernsystem.java" CS8vIFRPRE8gZG9jcwoJcHJpdmF0ZSBPcHRpb25zIGVuYWJsZVN3YShPcHRpb25zIG9wdGlv bnMpCgl7CgkJLy8gQ0hVTktFRCBpcyBuZWVkZWQgdG8gc3RyZWFtIGF0dGFjaG1lbnRzIGRp cmVjdGx5IG92ZXIgdGhlIHdpcmUsIGVsc2UgQXhpcyAyIGNyZWF0ZXMKCQkvLyBjb21wbGV0 ZWx5IGZvcm1hdHRlZCBIVFRQLXJlcXVlc3RzIGluIG1lbW9yeSBvciBvcHRpb25hbGx5IHRl bXBvcmFyeSBmaWxlcywgYmVjYXVzZQoJCS8vIGl0IHdvdWxkIG5lZWQgdG8ga25vdyB0aGUg Y29udGVudCBsZW5ndGggZXRjLiBiZWZvcmUgYWN0dWFsbHkgc2VuZGluZyBhbnkgZGF0YS4g VGhhdAoJCS8vIGlzIG9ubHkgcG9zc2libGUgYWZ0ZXIgdGhlIHJlcXVlc3QgaGFzIGJlZW4g cmVuZGVyZWQgY29tcGxldGVseS4KCQkvLwoJCS8vIGh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFw YWNoZS5vcmcvbW9kX21ib3gvYXhpcy1qYXZhLXVzZXIvMjAxODA5Lm1ib3gvPDE0ODY4MjE3 NTkuMjAxODA5MjMyMDIwMDglNDBhbS1zb2Z0LmRlPgoJCW9wdGlvbnMuc2V0UHJvcGVydHko Q29uc3RhbnRzLkNvbmZpZ3VyYXRpb24uRU5BQkxFX1NXQSwJQ29uc3RhbnRzLlZBTFVFX1RS VUUpOwoJCW9wdGlvbnMuc2V0UHJvcGVydHkoSFRUUENvbnN0YW50cy5DSFVOS0VELAkJCQlD b25zdGFudHMuVkFMVUVfVFJVRSk7CgoJCXJldHVybiBvcHRpb25zOwoJfQoKCS8vIFRPRE8g ZG9jcwoJcHJpdmF0ZSBPcHRpb25zIHNldExhcmdlVXBsb2FkVGltZW91dHMoT3B0aW9ucyBv cHRpb25zKQoJewoJCWZpbmFsIGludCB0aW1lb3V0ID0gMzYwMCAqIDEwMDA7CgoJCW9wdGlv bnMuc2V0UHJvcGVydHkoSFRUUENvbnN0YW50cy5DT05ORUNUSU9OX1RJTUVPVVQsCXRpbWVv dXQpOwoJCW9wdGlvbnMuc2V0UHJvcGVydHkoSFRUUENvbnN0YW50cy5TT19USU1FT1VULAkJ CXRpbWVvdXQpOwoJCW9wdGlvbnMuc2V0VGltZU91dEluTWlsbGlTZWNvbmRzKHRpbWVvdXQp OwoKCQlyZXR1cm4gb3B0aW9uczsKCX0KCgkvLyBUT0RPIGRvY3MsIEByZXR1cm4gW1Jlc3Vs dCBjb2RlLCBBcnJpdmFsIG5vdGljZV0KCXB1YmxpYwlFbnRyeTxJbnRlZ2VyLCBieXRlW10+ CgkJCWVscmV2X0VuZFJ1ZWNrVXBsb2FkKAlsb25nCQltc2dJZCwKCQkJCQkJCQkJRGF0YUhh bmRsZXIJcGF5bG9hZCwKCQkJCQkJCQkJU3RyaW5nCQltYWlsSW5mbykKCXsKWy4uLl0KCQkJ U2VydmljZUNsaWVudAlzZXJ2aWNlQ2xpZW50CT0gbmV3IFNlcnZpY2VDbGllbnQoKTsKCQkJ QXhpc1NlcnZpY2UJCWF4aXNTZXJ2aWNlCQk9IHNlcnZpY2VDbGllbnQuZ2V0QXhpc1NlcnZp Y2UoKTsKCQkJT3B0aW9ucwkJCW9wdGlvbnMJCQk9IHRoaXMuZ2V0RGVmU29hcE9wdHMoZnVu Y05hbWUpOwoKCQkJLy8gVE9ETyBkb2NzCgkJCWF4aXNTZXJ2aWNlLmFkZE1lc3NhZ2VDb250 ZXh0TGlzdGVuZXIobmV3IE1lc3NhZ2VDb250ZXh0TGlzdGVuZXIoKQoJCQl7CgkJCQlAT3Zl cnJpZGUKCQkJCXB1YmxpYyB2b2lkIGF0dGFjaFNlcnZpY2VDb250ZXh0RXZlbnQoU2Vydmlj ZUNvbnRleHQgc2MsIE1lc3NhZ2VDb250ZXh0IG1jKQoJCQkJewoJCQkJCS8vIFdlIGRvbid0 IGNhcmUgY3VycmVudGx5LCBidXQgSSBkaWRuJ3Qgc2VlIHNvbWUgYWJzdHJhY3QgYmFzZSB3 aXRoIHNvbWUgZW1wdHkKCQkJCQkvLyBpbXBsZW1lbnRhdGlvbiBhcyB3ZWxsLgoJCQkJfQoK CQkJCUBPdmVycmlkZQoJCQkJcHVibGljIHZvaWQgYXR0YWNoRW52ZWxvcGVFdmVudChNZXNz YWdlQ29udGV4dCBtYykKCQkJCXsKCQkJCQltYy5hZGRBdHRhY2htZW50KCJwYXlsb2FkIiwg cGF5bG9hZCk7CgkJCQl9CgkJCX0pOwoKCQkJdGhpcy5lbmFibGVTd2Eob3B0aW9ucyk7CgkJ CXRoaXMuc2V0TGFyZ2VVcGxvYWRUaW1lb3V0cyhvcHRpb25zKTsKCQkJc2VydmljZUNsaWVu dC5zZXRPcHRpb25zKG9wdGlvbnMpOwoJCQl0aGlzLmluaXRIdHRwQ29ubmVjdGlvbk1hbmFn ZXIoc2VydmljZUNsaWVudCk7CgoJCQlPTUVsZW1lbnQJcmVzdWx0CQk9IHNlcnZpY2VDbGll bnQuc2VuZFJlY2VpdmUobWV0aG9kKTsKCQkJCQkJcmVzcG9uc2UJPSB0aGlzLnJlYWRFbmRV cGxvYWRSZXN1bHRzKHJlc3VsdCwgcmVzcG9uc2UpOwpbLi4uXQoJfQo= ------------0170F91AA3F84017A Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org For additional commands, e-mail: java-dev-help@axis.apache.org ------------0170F91AA3F84017A--