Bookshelf Home | Contents | Index | PDF |
Oracle Web Services On Demand Guide > Best Practices for Designing Client Application > Best Practices for Integration Design > Avoiding Proxy Class Compilation Failure Due to the Java 64KB LimitThe Java language enforces a size limit on member functions, which cannot exceed the size of 64KB (see http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#9279). As part of the process of generating proxy classes from the Oracle CRM On Demand WSDL files, the serializer and deserializer methods that are generated can exceed 64KB in size. Therefore, a process like the following can result in a compilation error:
This occurs for any Java compiler depending on the number of fields that are generated in the doSerialize or doDeserialize methods, as the 64KB limit is a Java VM limitation. There are two possible workarounds:
public void doSerialize(java.lang.Object obj, XMLWriter writer, SOAPSerializationContext context) throws Exception // @GeneratedBlockBegin (value={"oracle.j2ee.ws"} ); activity.proxy.types.crmondemand.xml.activity.data.ActivityData instance = (activity.proxy.types.crmondemand.xml.activity.data.ActivityData)obj; if (instance.getModifiedDate() != null) { myns3_dateTime__java_util_Calendar_DateTimeCalendar_Serializer.setNullable( false ); myns3_dateTime__java_util_Calendar_DateTimeCalendar_Serializer.serialize(instance.getModifiedDate(), ns2_ModifiedDate_QNAME, null, writer, context); if (instance.getCreatedDate() != null) { myns3_dateTime__java_util_Calendar_DateTimeCalendar_Serializer.setNullable( false ); myns3_dateTime__java_util_Calendar_DateTimeCalendar_Serializer.serialize(instance.getCreatedDate(), ns2_CreatedDate_QNAME, null, writer, context); if (instance.getModifiedById() != null) { myns3_string__java_lang_String_String_Serializer.setNullable( false ); myns3_string__java_lang_String_String_Serializer.serialize(instance.getModifiedById(), ns2_ModifiedById_QNAME, null, writer, context); if (instance.getCreatedById() != null) { myns3_string__java_lang_String_String_Serializer.setNullable( false ); myns3_string__java_lang_String_String_Serializer.serialize(instance.getCreatedById(), ns2_CreatedById_QNAME, null, writer, context); if (instance.getModId() != null) { myns3__int__java_lang_Integer_Int_Serializer.setNullable( false ); myns3__int__java_lang_Integer_Int_Serializer.serialize(instance.getModId(), ns2_ModId_QNAME, null, writer, context); Figure 3. A doSerialize() Method After Splittingpublic void doSerialize(java.lang.Object obj, XMLWriter writer, SOAPSerializationContext context) throws Exception // @GeneratedBlockBegin (value={"oracle.j2ee.ws"} ); activity.proxy.types.crmondemand.xml.activity.data.ActivityData instance = (activity.proxy.types.crmondemand.xml.activity.data.ActivityData)obj; instance = doSerialize1(instance, writer, context); instance = doSerialize2(instance, writer, context); public activity.proxy.types.crmondemand.xml.activity.data.ActivityData doSerialize1(activity.proxy.types.crmondemand.xml.activity.data.ActivityData instance, XMLWriter writer, SOAPSerializationContext context) throws Exception if (instance.getModifiedDate() != null) { myns3_dateTime__java_util_Calendar_DateTimeCalendar_Serializer.setNullable( false ); myns3_dateTime__java_util_Calendar_DateTimeCalendar_Serializer.serialize(instance.getModifiedDate(), ns2_ModifiedDate_QNAME, null, writer, context); if (instance.getCreatedDate() != null) { myns3_dateTime__java_util_Calendar_DateTimeCalendar_Serializer.setNullable( false ); myns3_dateTime__java_util_Calendar_DateTimeCalendar_Serializer.serialize(instance.getCreatedDate(), ns2_CreatedDate_QNAME, null, writer, context); public activity.proxy.types.crmondemand.xml.activity.data.ActivityData doSerialize2(activity.proxy.types.crmondemand.xml.activity.data.ActivityData instance, XMLWriter writer, SOAPSerializationContext context) throws Exception if (instance.getModifiedById() != null) myns3_string__java_lang_String_String_Serializer.setNullable( false ); myns3_string__java_lang_String_String_Serializer.serialize(instance.getModifiedById(), ns2_ModifiedById_QNAME, null, writer, context); if (instance.getCreatedById() != null) { myns3_string__java_lang_String_String_Serializer.setNullable( false ); myns3_string__java_lang_String_String_Serializer.serialize(instance.getCreatedById(), ns2_CreatedById_QNAME, null, writer, context); if (instance.getModId() != null) { myns3__int__java_lang_Integer_Int_Serializer.setNullable( false ); myns3__int__java_lang_Integer_Int_Serializer.serialize(instance.getModId(), |
Oracle Web Services On Demand Guide, Version 25.0 (Oracle CRM On Demand Release 37) | Copyright © 2018, Oracle and/or its affiliates. All rights reserved. Legal Notices. | |