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

Reply via email to