axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Davanum Srinivas <d...@yahoo.com>
Subject Re: Revised Interoperability between Axis 1.1 Beta and Microsoft .NET Framework 1.0 FAQ
Date Thu, 06 Feb 2003 14:01:37 GMT
Richard,

I added this to our Wiki so that everyone can view/edit/comment as well. See
http://nagoya.apache.org/wiki/apachewiki.cgi?AxisProjectPages/DotNetInterop

Thanks,
dims

--- "Kellogg, Richard" <RKellogg@MICROS.COM> wrote:
> Well gang.  I have added a few new details and added comments provided by Steve.  If
you have
> anything to add please send it on.
> If this looks complete I will try and submit it as a HTML document for addition to CVS.
> 
> Thanks,
> Rick Kellogg
> 
> Interoperability Notes on Apache Axis 1.1 Beta and Microsoft .NET Framework 1.0 FAQ
> Last Updated: Feb-06-2003
> 
> Q: What datatypes can be safely used between Java and the Microsoft .NET 1.0 Framework?
> A: The following simple Java datatypes can be used: String, boolean, byte, short, int,
long,
> float, and double.
>    You can also create typed arrays of any of the above.  Standard Sun JavaBeans
> (http://java.sun.com/products/javabeans) and arrays
>    of JavaBeans are supported as well.
> 
> Q: What about transferring java.util.Calendar values?
> A: There are known problems with serializing/deserializing Calendar objects.  Under Java,
the
> Calendar object includes timezone
>    information.  Under .NET, the System.DateTime value object does not contain timezone
> information.  The .NET Framework assumes its
>    timezone is the current timezone when serializing and ignores it when deserializing.
 As a
> result, values can be off by +/- 24 hours.
> 
>    Two possible work arounds are the use of a string or wrapper value object.  When transmitting
> time values, a long is recommended.
> 
> Q: Can you provide mappings for Java datatypes to their equivalents under .NET?
> A: Java	      C#.NET     VB.NET      .NET Framework Type
>    String     string     String      System.String
>    boolean    bool       Boolean     System.Boolean
>    byte	      sbyte      -N/A-       System.SByte
>    short      short      Decimal     System.Int16
>    int 	      int        Integer     System.Int32
>    long       long       Long        System.Int64
>    float      float      Single      System.Single
>    double     double     Double      System.Double
> 
> Q: Can the standard Java primitive wrappers like java.lang.Integer or java.lang.Double
be used?
> A: Not directly.  Microsoft C# does not have an equivalent language feature.  You could
work
> around this by using the C# object datatype.
> 
> Q: What datatypes or design patterns should I avoid when seeking maximum interoperability?
> A: You should avoid the following constructs:
>       * Standard Java Collection classes.
>       * Typesafe enumerations.  Use static final variables within Java instead.
>       * Multi-dimensional and jagged arrays.
>       * The Java char datatype is not supported because of an omission in XML Schema.
>       * Avoid using the same method name multiple times with varying parameters on a
web
> service.
> 
> Q: How does one go about transmitting attachments between Java and the Microsoft .NET
1.0
> Framework?
> A: The basic .NET Framework 1.0 does not provide any support for attachments.
> 
>    The recent Microsoft Web Services Enhancements (WSE) 1.0 does add support for DIME
(Direct
> Internet Message Encapsulation).
>    Please note there has been no indication from Microsoft concerning whether WSE will
be
> included in the upcoming .NET Framework 1.1.
>    As a result, DIME support would require the installation on WSE on client machines.
> 
>    Axis does support both MIME and DIME attachments.
> 
> Q: Is it possible to compress a message using something like GZIP?
> A: Unfortunately at this time no.
> 
> Q: Can you provide a recommendation of how to transport a java.util.Map to C#?
> A: The easiest solution is to implement a typed array with a JavaBean.
> 
>    public class MapEntryVO {
>      private Object  key;
>      private Object  value;
> 
>      public MapEntryVO() {
>      }
> 
>      public MapEntryVO(String key, Object value) {
>        this.key   = key;
>        this.value = value;
>      }
> 
>      public Object getKey() {
>        return key;
>      }
>      public void setKey(Object value) {
>        key = value;
>      }
> 
>      public Object getValue() {
>        return value;
>      }
>      public void setValue(Object value) {
>        this.value = value;
>      }
>    }
> 
>    ------------------------------------------------
> 
>    import java.util.*;
> 
>    public class WebServicesUtils {
>      public static MapEntryVO[] convertMapToMapEntryVO(Map conv) {
>        MapEntryVO[] result = new MapEntryVO[conv.size()];
>        int i = 0;
>        Iterator iter = conv.entrySet().iterator();
> 
>        while (iter.hasNext()) {
>          Map.Entry item = (Map.Entry) iter.next();
>          result[i++] = new MapEntryVO(item.getKey(),item.getValue());
>        }
> 
>        return result;
>      }
>    }
> 
>    ------------------------------------------------
> 
>    // Example WebService
>    public class TestService {
>       public MapEntryVO[] testMethod() {
>         java.util.Map value = new java.util.HashMap();
> 
>         value.put("Key 1","Value 1");
>         value.put("Key 2","Value 2");
> 
>         return WebServicesUtils.convertMapToMapEntryVO(value);
>       }
>    }
> 
> > Interoperability Notes on Apache Axis 1.1 Beta and Microsoft .NET Framework 1.0
FAQ
> Last Updated: Feb-06-2003
> Author: Rick Kellogg (rkellogg@micros.com)
> 
> Q: What datatypes can be safely used between Java and the Microsoft .NET 1.0 Framework?
> A: The following simple Java datatypes can be used: String, boolean, byte, short, int,
long,
> float, and double.
>    You can also create typed arrays of any of the above.  Standard Sun JavaBeans
> (http://java.sun.com/products/javabeans) and arrays
>    of JavaBeans are supported as well.
> 
> Q: What about transferring java.util.Calendar values?
> A: There are known problems with serializing/deserializing Calendar objects.  Under Java,
the
> Calendar object includes timezone
>    information.  Under .NET, the System.DateTime value object does not contain timezone
> information.  The .NET Framework assumes its
>    timezone is the current timezone when serializing and ignores it when deserializing.
 As a
> result, values can be off by +/- 24 hours.
> 
>    Two possible work arounds are the use of a string or wrapper value object.  When transmitting
> time values, a long is recommended.
> 
> Q: Can you provide mappings for Java datatypes to their equivalents under .NET?
> A: Java       C#.NET     VB.NET      .NET Framework Type
>    String     string     String      System.String
>    boolean    bool       Boolean     System.Boolean
>    byte       sbyte      -N/A-       System.SByte
>    short      short      Decimal     System.Int16
>    int        int        Integer     System.Int32
>    long       long       Long        System.Int64
>    float      float      Single      System.Single
>    double     double     Double      System.Double
> 
> Q: Can the standard Java primitive wrappers like java.lang.Integer or java.lang.Double
be used?
> A: Not directly.  Microsoft C# does not have an equivalent language feature.  You could
work
> around this by using the C# object datatype.
> 
> Q: What datatypes or design patterns should I avoid when seeking maximum interoperability?
> A: You should avoid the following constructs:
>       * Standard Java Collection classes.
>       * Typesafe enumerations.  Use static final variables within Java instead.
>       * Multi-dimensional and jagged arrays.
>       * The Java char datatype is not supported because of an omission in XML Schema.
>       * Avoid using the same method name multiple times with varying parameters on a
web
> service.
> 
> Q: How does one go about transmitting attachments between Java and the Microsoft .NET
1.0
> Framework?
> A: The basic .NET Framework 1.0 does not provide any support for attachments.
> 
>    The recent Microsoft Web Services Enhancements (WSE) 1.0 does add support for DIME
(Direct
> Internet Message Encapsulation).
>    Please note there has been no indication from Microsoft concerning whether WSE will
be
> included in the upcoming .NET Framework 1.1.
>    As a result, DIME support would require the installation on WSE on client machines.
> 
>    Axis does support both MIME and DIME attachments.
> 
> Q: Is it possible to compress a message using something like GZIP?
> A: Unfortunately at this time no.
> 
> Q: Can you provide a recommendation of how to transport a java.util.Map to C#?
> A: The easiest solution is to implement a typed array with a JavaBean.
> 
>    public class MapEntryVO {
>      private Object  key;
>      private Object  value;
> 
>      public MapEntryVO() {
>      }
> 
>      public MapEntryVO(String key, Object value) {
>        this.key   = key;
>        this.value = value;
>      }
> 
>      public Object getKey() {
>        return key;
>      }
>      public void setKey(Object value) {
>        key = value;
>      }
> 
>      public Object getValue() {
>        return value;
>      }
>      public void setValue(Object value) {
>        this.value = value;
>      }
>    }
> 
>    ------------------------------------------------
> 
>    import java.util.*;
> 
>    public class WebServicesUtils {
>      public static MapEntryVO[] convertMapToMapEntryVO(Map conv) {
>        MapEntryVO[] result = new MapEntryVO[conv.size()];
>        int i = 0;
>        Iterator iter = conv.entrySet().iterator();
> 
>        while (iter.hasNext()) {
>          Map.Entry item = (Map.Entry) iter.next();
>          result[i++] = new MapEntryVO(item.getKey(),item.getValue());
>        }
> 
>        return result;
>      }
>    }
> 
>    ------------------------------------------------
> 
>    // Example WebService
>    public class TestService {
>       public MapEntryVO[] testMethod() {
>         java.util.Map value = new java.util.HashMap();
> 
>         value.put("Key 1","Value 1");
>         value.put("Key 2","Value 2");
> 
>         return WebServicesUtils.convertMapToMapEntryVO(value);
>       }
>    }
> 
> 
> 


=====
Davanum Srinivas - http://webservices.apache.org/~dims/

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

Mime
View raw message