Internal wscompile error from custom WSDL

From: Ryan LeCompte <>
Date: Wed, 4 May 2005 14:03:51 -0400

Hello all,


I'm running across various issues with the "wscompile" utility in JWSDP 1.5.
The problem mainly arises when I have a "message" element in my custom WSDL
that has more than one "part" inner elements (basically I want a generated
method with multiple parameters). I've written a simple test WSDL file that
can be used to illustrate the problem. Note that this is a document/literal
web service that I'm passing as input to wscompile so that the corresponding
Java objects can be generated. The wscompile command that I'm using is:


wscompile -gen:server -model model -f:wsi -f:unwrap -f:documentliteral -keep
-s generated -d output/server -verbose -classpath . config.xml


Note that I want the generated methods to use Item[] for method arguments
and not the generated "Items" object. The following WSDL file illustrates
the problem. If you take out the "param_two" from the message
"TestWebService_handleItems" then wscompile generates the proper artifacts.
However, if you add an extra parameter ("part_two") as the WSDL is currently
written, then wscompile outputs the following error:


[CustomClassGenerator: generating JavaClass for: Item]

[CustomClassGenerator: generating JavaClass for: Items]

[LiteralObjectSerializerGenerator: writing serializer/deserializer for:

[LiteralObjectSerializerGenerator: writing serializer/deserializer for:

error: generator error: internal error (should not happen):


Note that it still appears to generate all of the proper Java artifacts,
except now the main endpoint interface that it generates uses the "Items"
object as a parameter instead of "Item[]". Is there something wrong in the
way that I'm writing the WSDL? I've also noticed that if I don't use the
name of the operation as the element name for the "Items" complex type, then
the generated endpoint interface uses "Items" and not "Item[]".


Can anyone point me in the right direction here?


Thank you,





<?xml version="1.0" encoding="UTF-8"?>


File: Test.wsdl



<definitions name="TestWebService"






            <!-- Types: Provides data type definitions used to describe the
messages exchanged. -->





                                    <complexType name="Items">


name="arrayOfItems" type="tns:Item" nillable="false"

minOccurs="1" maxOccurs="unbounded">




                                    <complexType name="Item">


name="itemIdentifier" type="string" nillable="false"/>

name="itemName" type="string" nillable="true"/>



                                    <element name="handleItems"
type="tns:Items" />

                                    <element name="itemElement"




            <!-- Message: An abstract definition of the data being
transmitted. -->

            <message name="TestWebService_handleItems">

                        <part name="param_one" element="xsdns:handleItems"/>

                        <part name="param_two" element="xsdns:itemElement"/>



            <!-- PortType: An abstract definition of the operations. -->

            <portType name="TestWebServicePortType">

                        <operation name="handleItems">





            <!-- Binding: The concrete protocol and data format for the
operations and messages. -->

            <binding name="TestWebServiceBinding"

transport="" style="document"/>

                        <operation name="handleItems">



                                                <soap:body use="literal"/>





            <service name="TestWebService">

                        <port name="TestWebServicePort"








<?xml version="1.0" encoding="UTF-8" ?>


<configuration xmlns="">

    <wsdl location="C:/test/Test.wsdl"

          packageName="com.test "/>