I honestly don't think there is a workaround for this as this is something that is a limitation down in the Java runtime, not CXF. If you do something simple like:
InvocationHandler handler = new InvocationHandler() { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return null; } }; Proxy.newProxyInstance(SEIInterface.class.getClassLoader(), new Class[] {SEIInterface.class}, handler); it will likely generate the same exception. We just use the in-JVM facilities for creating proxy objects from the interfaces and thus any limitation they have would be reflected. I don't know if using a newer version of the JDK would change anything. That said, IMO, putting 2400 methods on a single portType is a really BAD BAD idea. This service should be broken up into functional groups each in it's own portType/binding/port. Dan On Aug 1, 2013, at 11:54 AM, Ryan Hall (ryhall) <ryh...@cisco.com> wrote: > Hello, > > I've recently encountered an interesting problem when trying to write a > client to connect to the code stubs generated by CXF's WSDL2Java tool. > Basically, the code stubs appear to generate correctly, but whenever I try to > create a client which uses those stubs, I obtain the following error message > while trying to getPort(), basically while the proxy classes are being > generated: > > INFO: Creating Service {http://example.com/}FooWebService from WSDL: > jar:file:/WorkflowExampleWebClient.jar!/FooWebService.wsdl > Error! Not able to run sample workflow completely. > java.lang.IllegalArgumentException: code size limit exceeded > at > sun.misc.ProxyGenerator.generateStaticInitializer(ProxyGenerator.java:1220) > at sun.misc.ProxyGenerator.generateClassFile(ProxyGenerator.java:443) > at sun.misc.ProxyGenerator.generateProxyClass(ProxyGenerator.java:306) > at java.lang.reflect.Proxy.getProxyClass(Proxy.java:501) > at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581) > at > org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:171) > at > org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:151) > at org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:464) > at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:331) > at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:318) > at javax.xml.ws.Service.getPort(Service.java:92) > > The WSDL is currently ~4.6MB with ~2400 methods. This was working before when > the wsdl was smaller, and If I remove around 300-400 methods, then this error > doesn't happen and the client works correctly. I've tried several versions of > CXF (the version used here is 2.4.8) and receive essentially the same error > message every time. > > It appears to me to be a bug in the client side code generation or proxy > generation. I was wondering if anyone has seen this error before or if anyone > knows of any possible workarounds? > > Thanks, > Ryan Hall -- Daniel Kulp dk...@apache.org - http://dankulp.com/blog Talend Community Coder - http://coders.talend.com