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
