views:

147

answers:

2

We're currently working with a vendor-provided WSDL schema that is very large. The binding style is RPC. As far as I know, Axis 1.x is the only Java tool supporting RPC WSDL definitions. Please do correct me if I'm wrong about that.

WSDL2Java generates a service-nameSkeleton.java file that has a static intialisation block 1.3Mb in size - considerably larger than Java's 64K limit.

Given that we can't change the definition of the interface, how do you think we should proceed?

Our options as I see them are:

  • Break up the generated static block
  • Break up the WSDL (not sure if that's possible without altering the interface)
  • Patch the Axis WSDL2Java code

Any other ideas?

+1  A: 

If your wsdl is likely to change frequently, it could be worth patching the wsdl2java code, otherwise I would go for the first option.

Maurice Perry
+1  A: 

See this article, which gives some instructions on how you can convert a RPC WSDL to a document one. I recommend trying that first.

Also, you probably have an RPC/encoded WSDL (which by the way, doesn't conform to WS-I). JAXWS only supports RPC/literal. So any framework (like CXF or Axis2) will support it. So, you can also try to convert the WSDL to RPC/literal.

CXF has a tool that could do the job for you.

Anyway, I recommend trying to convert the WSDL to a more recent form. This will make your life easier, both for the server and the client implementations. I don't believe that is worth fighting with Axis1. Even manually writing and parsing the SOAP messages could be easier.

kgiannakakis