Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top