Evaluation of XML-RPC interoperability between the.net and JAVA framework



Similar documents
Integrating Jalopy code formatting in CVS repositories

Innovation Management An Overview and some Best Practices

1.Remote Procedure Call Basics Requests Types Response Strategies/Goals FAQ...

CHAPTER 10: WEB SERVICES

StreamLink 5.0. StreamLink Configuration XML Reference. November 2009 C O N F I D E N T I A L

Installation Instructions for SAP GUI for Java 7.2

KC Data Integration Web Service Developer Guide

Logging in Java Applications

Overview of Web Services API

Symantec Endpoint Protection 11.0 Architecture, Sizing, and Performance Recommendations

PBS CBW NLS IQ Enterprise Content Store

SOFTWARE MANUAL UNIOPC

Archive One Policy V4.2 Quick Start Guide October 2005

Efficiency of Web Based SAX XML Distributed Processing

SAP Enterprise Portal 6.0 KM Platform Delta Features

Symantec Endpoint Protection Shared Insight Cache User Guide

Onset Computer Corporation

.NET Overview. Andreas Schabus Academic Relations Microsoft Österreich GmbH

CA Identity Manager. Glossary. r12.5 SP8

Aras Innovator.NET Client Security Policy Configuration

Remote Console Installation & Setup Guide. November 2009

DevTest Solutions. Local License Server. Version 2.1.2

Allscripts Professional EHR

Receptionist-Small Business Administrator guide

Multiple Components in One Database -

Lesson: All About Sockets

Web services can convert your existing applications into web applications.

DeviceAnywhere Automation for Smartphones Setup Guide Windows Mobile

PC-Duo Web Console Installation Guide

Interworks. Interworks Cloud Platform Installation Guide

DameWare Server. Administrator Guide

Opus Guide for IT Managers

Symantec Protection for SharePoint Servers Getting Started Guide

Imaging License Server User Guide

Configuring and Integrating JMX

Healthstone Monitoring System

Nimsoft Monitor. dns_response Guide. v1.6 series

MD Link Integration MDI Solutions Limited

PAYware SIMM Interface

Instant Queue Manager V4

Hardware, Software & Network Requirements

Certificate SAP INTEGRATION CERTIFICATION

Amazon Glacier. Developer Guide API Version

TIBCO Spotfire Metrics Prerequisites and Installation

Upgrading from Call Center Reporting to Reporting for Contact Center. BCM Contact Center

Getting Started Guide for Symantec On-Demand Protection for Outlook Web Access 3.0

Network/Socket Programming in Java. Rajkumar Buyya

HP Business Availability Center

JobScheduler Web Services Executing JobScheduler commands

HOBOlink Web Services V2 Developer s Guide

SAP Sourcing/CLM Webcast Query & User/Contact Maintenance Web Service

Getting Started with the Internet Communications Engine

Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON

SharePoint Impact Analysis. AgilePoint BPMS v5.0 SP2

Quest vworkspace Virtual Desktop Extensions for Linux

Installation Instructions for SAP GUI for Java 7.2 rev5

Symantec LiveUpdate Administrator. Getting Started Guide

Web Services Performance: Comparing Java 2 TM Enterprise Edition (J2EE TM platform) and the Microsoft.NET Framework

AdminToys Suite. Installation & Setup Guide

IGEL Universal Management. Installation Guide

Division of Informatics, University of Edinburgh

Sabine Reich SAP. Test Workbench - Introduction

CA Nimsoft Monitor. snmptd Guide. v3.0 series

HP eprint Enterprise. Installation Checklist. Release 4.2

CA Process Automation

Intellex Platform Security Update Process. Microsoft Security Updates. Version 11-12

Synchronization Server SDK Version Release Notes and Known Issues List

AIMS Installation and Licensing Guide

Practical Performance Understanding the Performance of Your Application

CA Unified Infrastructure Management

Wise Package Studio 8.0 MR1 Release Notes

CRM Outlook Plugin Installation

Big Brother Professional Edition Windows Client Getting Started Guide. Version 4.60

Working in a ubiquitous computing environment

First Java Programs. V. Paúl Pauca. CSC 111D Fall, Department of Computer Science Wake Forest University. Introduction to Computer Science

BroadWorks Receptionist

Setting Up a Unisphere Management Station for the VNX Series P/N Revision A01 January 5, 2010

Quest vworkspace. System Requirements. Version 7.2 MR1

Intel NetMerge Call Processing Software Introduction

INSTALLING SQL SERVER 2012 EXPRESS WITH ADVANCED SERVICES FOR REDHORSE CRM

See the Developer s Getting Started Guide for an introduction to My Docs Online Secure File Delivery and how to use it programmatically.

Web Services API Developer Guide

TBarCode.NET Barcodes in MS SQL Reporting Services

Web Enabled Software for 8614xB-series Optical Spectrum Analyzers. Installation Guide

White Paper. Fabasoft Folio Thin Client Support. Fabasoft Folio 2015 Update Rollup 2

Consuming and Producing Web Services with WST and JST. Christopher M. Judd. President/Consultant Judd Solutions, LLC

CompleteView Pop Up Monitor User s Manual. Version 3.8

A guide to CLARiSUITE TM network solutions

Use of DB2 purescale with SAP Applications

MEGA Web Application Architecture Overview MEGA 2009 SP4

AuditMatic Enterprise Edition Installation Specifications

Creating a Simple, Multithreaded Chat System with Java

Process Integrator Deployment on IBM Webspher Application Server Cluster

J2EE-Application Server

FileMaker 12. ODBC and JDBC Guide

Enterprise Self Service Quick start Guide

IBM Rational Web Developer for WebSphere Software Version 6.0

Symantec ESM agent for IBM AS/400

Web Portal Installation Guide 5.0

Mutual Fund Web Service Developer Guide

Transcription:

Evaluation of XML-RPC interoperability between the.net and JAVA framework Daniel Aslan Siemens Business Services GmbH & Co, C-LAB Wolfgang Thronicke Siemens Business Services GmbH & Co, C-LAB C-LAB Report Vol. 5 (2006) No. 1 Cooperative Computing & Communication Laboratory ISSN 1619-7879 C-LAB ist eine Kooperation der Universität Paderborn und der Siemens Business Services GmbH & Co OHG www.c-lab.de info@c-lab.de

Herausgegeben von Published by Dr. Wolfgang Kern, Siemens Business Services GmbH & Co OHG Prof. Dr. Franz-Josef Rammig, Universität Paderborn Das C-LAB - Cooperative Computing & Communication Laboratory - leistet Forschungs- und Entwicklungsarbeiten und gewährleistet deren Transfer an den Markt. Es wurde 1985 von den Partnern Nixdorf Computer AG (nun Siemens Business Services GmbH & Co OHG) und der Universität Paderborn im Einvernehmen mit dem Land Nordrhein-Westfalen gegründet. Die Vision, die dem C-LAB zugrunde liegt, geht davon aus, dass die gewaltigen Herausforderungen beim Übergang in die kommende Informationsgesellschaft nur durch globale Kooperation und in tiefer Verzahnung von Theorie und Praxis gelöst werden können. Im C-LAB arbeiten deshalb Mitarbeiter von Hochschule und Industrie unter einem Dach in einer gemeinsamen Organisation an gemeinsamen Projekten mit internationalen Partnern eng zusammen. C-LAB - the Cooperative Computing & Cooperation Laboratory - works in the area of research and development and safeguards its transfer into the market. It was founded in 1985 by Nixdorf Computer AG (now Siemens Business Services GmbH & Co OHG) and the University of Paderborn under the auspices of the State of North-Rhine Westphalia. C-LAB's vision is based on the fundamental premise that the gargantuan challenges thrown up by the transition to a future information society can only be met through global cooperation and deep interworking of theory and practice. This is why, under one roof, staff from the university and from industry cooperates closely on joint projects within a common research and development organization together with international partners. In doing so, C-LAB concentrates on those innovative subject areas in which cooperation is expected to bear particular fruit for the partners and their general well-being. ISSN 1619-7879 C-LAB Fürstenallee 11 33102 Paderborn fon: +49 5251 60 60 60 fax: +49 5251 60 60 66 email: info@c-lab.de Internet: www.c-lab.de Siemens Business Services GmbH & Co. OHG und Universität Paderborn 2006 Alle Rechte sind vorbehalten. Insbesondere ist die Übernahme in maschinenlesbare Form sowie das Speichern in Informationssystemen, auch auszugsweise nur mit schriftlicher Genehmigung der Siemens Business Services GmbH & Co. OHG und der Universität Paderborn gestattet. All rights reserved. In particular transfer of data into machine readable form as well as storage into information systems, (even extracts) is only permitted prior to written consent by Siemens Business Services GmbH & Co. OHG and Universität Paderborn.

Contents 1. Motivation...4 1.1. Scenario...4 1.2. XML-RPC description...4 1.3. XML-RPC implementations...4 1.3.1. Apache XML-RPC...4 1.3.2. XmlRpcCS...5 2. Test setup...5 2.1. Java...5 2.2..NET...5 3. Test results...6 4. Review of results...7 5. Listings...8 5.1. C#...8 5.1.1. Server...8 5.1.2. Client...9 5.2. JAVA...10 5.2.1. Server...10 5.2.2. Client...11 6. Acknowledgement...12 C-LAB-TR-2006-1 Page 3 von 12

1. Motivation Interoperability describes the ability of a system to access functions from another one. As long as the underlying operating system and the software platform are identical, components can chose between various protocols and mechanisms which usually work very efficiently. This evaluation investigates the interoperability of the two major platforms in the IT world: The JAVA platform and the.net framework 1. In order to generalize the results a common communication protocol has to be used, which is ideally based on XML. Despite the success of SOAP in web-like application environments, a full-fledged SOAP implementation was not desired for reasons of efficiency. Hence this evaluation uses the more basic but much more efficient XML-RPC to communicate between both platforms. 1.1. Scenario The target platform of this investigation is a small-sized PC - the OQO 2 - which is used as one of the implementation platforms in a European research project for wearable computing. The wearable platform to be implemented actually relies on implemented components both in JAVA and.net. In order to reduce the reimplementation and porting effort the interoperability of two co-existing framework parts is deemed necessary to satisfy some project constraints. 1.2. XML-RPC description XML-RPC is a specification and a set of implementations allowing to make remote procedure calls (RPC) over TCP/IP connections utilizing XML as data format. Typically XML-RPC uses the HTTP protocol to communicate between two communication endpoints. The payload data of an XML-RPC call are the parameters. They can represent scalar values like numbers, strings, etc. up to complex data-structures like records or lists. Detailed information can be found on: http://www.xmlrpc.com. 1.3. XML-RPC implementations A number of XML-RPC implementations exist. These libraries are available for all current programming languages like PHP, Python, C/C++, JAVA, C# or Perl. For our scenario we use the XML-RPC versions for.net, C# and JAVA. 1.3.1. Apache XML-RPC The Apache XML-RPC implementation is very mature and offers full support for the HTTP protocol if needed. Additionally (which is interesting for local 1.NET is a trademark of Microsoft Corp. JAVA is a trademark of Sun Microsystems Inc. 2 Http://www.oqo.com C-LAB-TR-2006-1 Page 4 von 12

interoperability investigations), it comes with an optimized light-weight client with only basic HTTP support. The server side of XML-RPC is not only supported by embedding XML-RPC into an existing web-server, but also comes with its own internal XML-RPC server. Apache XML-RPC is under the Apache Software License, Version 2.0. Link: http://ws.apache.org/xmlrpc/index.html 1.3.2. XmlRpcCS Like Apache XML-RPC the XmlRpcCS (CS obviously stands for C#) supports both XML-RPC client and server behavior. It is not only fully XML-RPC compliant, but additionally supports the.net Compact Framework and the open-source.net counterpart Mono. XmlRpcCS is under the BSD license. Link: http://xmlrpccs.sourceforge.net/ 2. Test setup The interoperability tests took place on a machine running a.net or JAVA client vs. a corresponding server. The development hardware as a standard desktop PC (3 Ghz, Intel P4 HT, 1 GB RAM) and the OQO a Transmeta based shrink-sized PC with 1GHz CPU and 265 MB RAM. The operating system used was Windows XP Professional. The following environment was used for the test: 2.1. Java Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05- b04) (development PC) JAVA(TM) 2 Runtime Environment, Standard Edition (build 1.5.0) (OQO) Apache XML-RPC Version 2.0.1 + Apache Commons Codec Version 1.3 (required by XML-RPC for encode/decode XML streams) Used development environment: Eclipse 3.1 2.2..NET.NET Framework SDK 2.0 XmlRpcCS Version 1.10 Development environment used: Visual Studio.NET 2005 C-LAB-TR-2006-1 Page 5 von 12

3. Test results The following figure shows the result of the test-runs on the OQO: XMLRPC (.Net-Client -> Java-Server Java-Client ->.Net-Server) tested on Oko 12 11 10 (.Net -> Java) Method calls with 1 input parameter (String) (.Net -> Java) Method calls with 2 input parameters (String, Date) (.Net -> Java) Method calls with 6 input parameters (String, Integer, Double, String, ArrayList, Hashtable) (Java ->.Net) Method calls with 1 input parameter (String) (Java ->.Net) Method calls with 2 input parameters (String, Date) (Java ->.Net) Method calls with 6 input parameters (String, Integer, Double, String, ArrayList, Hashtable) 9 8 7 Time (sec) 6 5 4 3 2 1 0 0 50 100 150 200 250 300 350 400 450 500 Number of method calls For comparison the tests were repeated on a standard PC: C-LAB-TR-2006-1 Page 6 von 12

XMLRPC (.Net-Client -> Java-Server Java-Client ->.Net-Server) tested on Desktop PC 1.8 1.6 1.4 (.Net -> Java) Method calls with 1 input parameter (String) (.Net -> Java) Method calls with 2 input parameters (String, Date) (.Net -> Java) Method calls with 6 input parameters (String, Integer, Double, String, ArrayList, Hashtable) (Java ->.Net) Method calls with 1 input parameter (String) (Java ->.Net) Method calls with 2 input parameters (String, Date) (Java ->.Net) Method calls with 6 input parameters (String, Integer, Double, String, ArrayList, Hashtable) 1.2 Time (sec) 1 0.8 0.6 0.4 0.2 0 0 50 100 150 200 250 300 350 400 450 500 Number of method calls 4. Review of results Most importantly, XML-RPC is a viable option for interoperability between.net and JAVA. This has been proved in both calling directions. Moreover, XML-RPC is a good implementation candidate for objects of limited complexity. The results show an approximated performance of about 50 method calls/sec on the OQO with expected variances depending on the number of arguments. Actually if a complex object is involved the construction of such objects in the test-programs causes an essential rise in computing time. The differences between server and client roles indicate differences in the implementation in the libraries used (as they are open source, they are subject to improvement). A detailed factorization was not part of this investigation. Although misused in a local environment to establish a bridge between different software technologies, XML-RPC performs reliably. XML-RPC should evidently not be used, if a) continuously more than 10 messages/secs are expected (assuming that some time is needed to do some reasonable processing) or b) many different subsystems are to be coupled locally. Aside from the local use, the strength of XML-RPC lies clearly in a distributed scenario where such calls are transferred between systems. Especially with a limited bandwidth the considerable smaller size of XML-RPC messages in comparison to SOAP messages is a great benefit. C-LAB-TR-2006-1 Page 7 von 12

Another benefit of using XML-RPC is that moving such components from a local communication scheme to a remote one with server/client located on different machines connected by the Internet is simple, since XML-RPC is HTTP/HTTPS driven by default. 5. Listings The following listings present the core source of our test implementation. It has been quite straightforward and may help as a short additional guide on how to build an individual (and more functional) bridge between.net and JAVA components. 5.1. C# 5.1.1. Server / Copyright (c) 2006 C-Lab. All Rights Reserved. This software is the confidential and proprietary information. It shall be distributed only in accordance with C-Lab. C-LAB MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. C-LAB SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. / using System; using System.Collections.Generic; using System.Diagnostics; using System.Text; using Nwc.XmlRpc; namespace ObjectServer { class ObjectServer : XmlRpcServer { const int PORT = 9118; public ObjectServer() : base(port) { public ObjectServer(int port) : base(port) { /// <summary>simple logging to Console.</summary> static public void WriteEntry(String msg, LogLevel type) { if (type!= LogLevel.Information) { // ignore debug msgs Console.WriteLine("{0: {1", type, msg); /// Application starts here. public static void Main(string[] args) { // Use the console logger above. Logger.Delegate = new Logger.LoggerDelegate(WriteEntry); ObjectServer server = new ObjectServer(PORT); server.add("container", new ObjectContainer()); Console.WriteLine("Web Server Running on port {0... Press ^C to Stop...", PORT); server.start(); C-LAB-TR-2006-1 Page 8 von 12

5.1.2. Client / Copyright (c) 2006 C-Lab. All Rights Reserved. This software is the confidential and proprietary information. It shall be distributed only in accordance with C-Lab. C-LAB MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. C-LAB SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. / using System; using System.Collections.Generic; using System.Collections; using System.Text; using Nwc.XmlRpc; namespace ObjectClient { class ObjectClient { static string server_url = "http://127.0.01:9117"; static void Main(string[] args) { int maxmethodcall = 500; DateTime t1; DateTime t2; XmlRpcRequest client = new XmlRpcRequest(); XmlRpcResponse response; if (args.length > 0) { maxmethodcall = Int32.Parse(args[0]); Console.WriteLine("==========Send objects - 2 input parameters - started=========="); Console.WriteLine("Count of the method calls: " + maxmethodcall); t1 = DateTime.Now; for (int i = 0; i < maxmethodcall; i++) { client.methodname = "container.add"; client.params.clear(); client.params.add(i.tostring() + "_m1"); client.params.add(datetime.now); response = client.send(server_url); //Console.WriteLine(response.Value); t2 = DateTime.Now; Console.WriteLine("==========Send objects - 2 input parameters - finished=========="); Console.WriteLine("Total time = " + (t2 - t1) + "msec"); Console.WriteLine("==========Send objects - 6 input parameters - started=========="); Console.WriteLine("Count of the method calls: " + maxmethodcall); t1 = DateTime.Now; for (int i = 0; i < maxmethodcall; i++) { client.methodname = "container.add"; client.params.clear(); client.params.add(i.tostring() + "_m2"); client.params.add(i); client.params.add((double) i); client.params.add(i.tostring()); ArrayList l = new ArrayList(); l.add(i.tostring()); l.add(i + 1); client.params.add(l); C-LAB-TR-2006-1 Page 9 von 12

Hashtable t = new Hashtable(); t.add(i.tostring(), i.tostring()); Int32 j = i + 1; t.add(j.tostring(), j); client.params.add(t); response = client.send(server_url); //Console.WriteLine(response.Value); t2 = DateTime.Now; Console.WriteLine("==========Send objects - 6 input parameters - finished=========="); Console.WriteLine("Total time = " + (t2 - t1) + "msec"); Console.WriteLine("==========Send objects - 1 input parameter - started=========="); Console.WriteLine("Count of the method calls: " + maxmethodcall); t1 = DateTime.Now; for (int i = 0; i < maxmethodcall; i++) { client.methodname = "container.get"; client.params.clear(); client.params.add(i.tostring() + "_m1"); response = client.send(server_url); //Console.WriteLine(response.Value); t2 = DateTime.Now; Console.WriteLine("==========Send objects - 1 input parameter - finished=========="); Console.WriteLine("Total time = " + (t2 - t1) + "msec"); 5.2. JAVA 5.2.1. Server / Copyright (c) 2006 C-Lab. All Rights Reserved. This software is the confidential and proprietary information. It shall be distributed only in accordance with C-Lab. C-LAB MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. C-LAB SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. / import org.apache.xmlrpc.; public class ObjectServer extends WebServer { private static final int PORT = 9117; public ObjectServer() { super(port); public ObjectServer(int port) { super(port); public static void main(string args[]) { try { //XmlRpc.setKeepAlive(true); //XmlRpc.setDebug(true); C-LAB-TR-2006-1 Page 10 von 12

ObjectServer server = new ObjectServer(); //xmlrpcserver.acceptclient ("192.168.0."); // allow local access //xmlrpcserver.acceptclient ("127.0.0."); // allow local access server.addhandler("container", new ObjectContainer()); System.out.println("Web Server Running on port " + ObjectServer.PORT + "... Press ^C to Stop..."); server.start(); catch (Exception e) { System.err.println("Could not initialize XMLRPC-Server"); 5.2.2. Client / Copyright (c) 2006 C-Lab. All Rights Reserved. This software is the confidential and proprietary information. It shall be distributed only in accordance with C-Lab. C-LAB MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. C-LAB SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. / import org.apache.xmlrpc.; import java.io.; import java.sql.timestamp; import java.util.date; import java.util.hashtable; import java.util.vector; public class ObjectClient { final static String server_url = "http://127.0.0.1:9118"; public static void main(string args[]) throws XmlRpcException, IOException { int maxmethodcall = 500; Timestamp t1 = null; Timestamp t2 = null; final XmlRpcClient client = new XmlRpcClient(server_url); Vector params = new Vector(); if (args.length > 0) { maxmethodcall = Integer.parseInt(args[0]); System.out.println("==========Send objects - 2 input parameters - started=========="); System.out.println("Count of the method calls: " + maxmethodcall); t1 = new Timestamp(System.currentTimeMillis()); for (int i = 0; i < maxmethodcall; i++) { params.clear(); params.add(string.valueof(i) + "_m1"); params.add(new Date(System.currentTimeMillis())); client.execute("container.addtwo", params); //Object result = client.execute("container.addtwo", params); //System.out.println(result); t2 = new Timestamp(System.currentTimeMillis()); System.out.println("==========Send objects - 2 input parameters - finished=========="); System.out.println("Total time = " + (t2.gettime() - t1.gettime()) + "msec"); System.out.println("==========Send objects - 6 input parameters - started=========="); System.out.println("Count of the method calls: " + maxmethodcall); t1 = new Timestamp(System.currentTimeMillis()); for (int i = 0; i < maxmethodcall; i++) { params.clear(); params.add(string.valueof(i) + "_m2"); params.add(new Integer(i)); C-LAB-TR-2006-1 Page 11 von 12

params.add(new Double(i)); params.add(string.valueof(i)); Vector v = new Vector(); v.add(string.valueof(i)); v.add(new Integer(i + 1)); params.add(v); Hashtable t = new Hashtable(); t.put(string.valueof(i), String.valueOf(i)); t.put(string.valueof(i + 1), new Integer(i + 1)); params.add(t); client.execute("container.addsix", params); //Object result = client.execute("container.add", params); //System.out.println(result); t2 = new Timestamp(System.currentTimeMillis()); System.out.println("==========Send objects - 6 input parameters - finished=========="); System.out.println("Total time = " + (t2.gettime() - t1.gettime()) + "msec"); System.out.println("==========Send objects - 1 input parameter - started=========="); System.out.println("Count of the method calls: " + maxmethodcall); t1 = new Timestamp(System.currentTimeMillis()); for (int i = 0; i < maxmethodcall; i++) { params.clear(); params.add(string.valueof(i) + "_m1"); client.execute("container.get", params); //Object result = client.execute("container.get", params); //System.out.println(result); t2 = new Timestamp(System.currentTimeMillis()); System.out.println("==========Send objects - 1 input parameter - finished=========="); System.out.println("Total time = " + (t2.gettime() - t1.gettime()) + "msec"); 6. Acknowledgement This work was partly funded under grant 004216 by the European integrated project wearit@work - Empowering the mobile worker by wearable computing. C-LAB-TR-2006-1 Page 12 von 12

C-LAB Marketing Fürstenallee 11 D-33102 Paderborn Cooperative Computing & Communication Laboratory Telephone +49-5251-60-6060 Fax +49-5251-60-6066 E-Mail marketing@c-lab.de URL http://www.c-lab.de Survey concerning your satisfaction with the report Evaluation of XML-RPC interoperability between the.net and JAVA framework We kindly ask you to dedicate a short moment of your time to give us your personal assessment of this report. This will help us to improve our understanding of your needs. We would like to increase the alignment of our reports with your interests to offer you a higher surplus value. Thank you for your cooperation. How do you evaluate the subject of this report? applies completely Topical Interesting applies not at all How to you evaluate the content of this report? applies completely Topical Interesting Articulate Practical relevance Informative Innovative applies not at all Further comments: Voluntary information: Surname, first name: Telephone: E-Mail: Please send the filled in form via mail, fax or e-mail to the respective address mentioned above. Cooperation Universität Paderborn Siemens Business Services GmbH & Co. OHG Siemens Business Services GmbH & Co. OHG Prof. Dr. Franz-Josef Rammig Dr. Wolfgang Kern Universität Paderborn Telephone +49-5251-606062 Telephone +49-5251-606061