I think the system property does not work, because the META-INF/services definition has precedence. Zarar, try to change the war classloader to delegate=false (in sun-web.xml), this worked for me.
-- Peter On Thu, Dec 9, 2010 at 3:14 AM, Daniel Kulp <[email protected]> wrote: > On Wednesday 08 December 2010 5:27:19 pm Zarar Siddiqi wrote: > > Thanks for the reply, but no luck. > > > > The resource when loaded using the context classloader points to: > > > > > jar:file:/C:/glassfish/lib/webservices-rt.jar!/META-INF/services/javax.xml. > > ws.spi.Provider > > > > Which is obviously wrong. Even starting Glassfish with the system > property > > doesn't work. > > > > The code you provided does not compile as factory.create(Object) is not a > > method. The only create() method does not takes no parameters. > > Sorry. The create(Class) method was added recently. It would work with > 2.3.1. :-) > > Call: > factory.setServiceClass(HelloWorld.class); > HelloWorld proxy = (HelloWorld)factory.create(); > > The create(Class) method in the newer versions of CXF really just does the > above. It's a convienience method to avoid an extra method call and an > extra > cast. > > Dan > > > > > > Still looking into it. > > > > On Fri, Dec 3, 2010 at 5:46 PM, Daniel Kulp <[email protected]> wrote: > > > On Friday 03 December 2010 1:47:08 pm Zarar Siddiqi wrote: > > > > Hi, > > > > > > > > Got two apps serving as a client to an external web service, one is > on > > > > Tomcat and one is on Glassfish. The Tomcat one works like a charm, > but > > > > Glassfish keeps throwing the classic ClassCastException: > > > > > > > > com.sun.xml.ws.client.sei.SEIStub cannot be cast to > > > > org.apache.cxf.frontend.ClientProxy > > > > > > > > Funny part is that I have cxf-bundle already in the classpath of the > > > > war inside the ear and it contains the javax.xml.ws.spi.Provider file > > > > which contains the line org.apache.cxf.jaxws.spi.ProviderImpl. So I > > > > dont' see why it's using the provider that comes bundled with the JDK > > > > in rt.jar. I even tried putting the cxf-bundle jar at the root of > the > > > > EAR but that doesn't do it either. I even tried setting it using > > > > System.setProperty() and also attempted to create a file manually > > > > under WEB-INF/classes/... > > > > > > but > > > > > > > nothing. > > > > > > > > Any ideas on what might be missing? > > > > > > I'm definitely surprised the system property didn't work. I wonder if > a > > > combination of setting the system property and then making sure the > the > > > contextClassLoader().getResource("META-INF/...") call grabs the file > > > would work. > > > > > > You could just do use the JaxWsProxyFactoryBean in CXF directly to > create > > > the > > > client proxy. That would bypass the SPI stuff. > > > > > > JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); > > > factory.setAddress("http://localhost:9000/helloWorld"); > > > HelloWorld client = factory.create(HelloWorld.class); > > > > > > > > > -- > > > Daniel Kulp > > > [email protected] > > > http://dankulp.com/blog > > -- > Daniel Kulp > [email protected] > http://dankulp.com/blog >
