You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by ellisd5 <da...@serengeti-systems.com> on 2012/04/16 12:17:46 UTC

Deploying a WS Client to weblogic

I have built an Ws Client to wrap around some web services I have, using cxf
2.5.2. I am generating the code using the wsdl2java plug in and had been
relatively pleased with how its all working. Using the client code I have
written running junit tests it all seems to work fine.

My pom...

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>myGroup</groupId>
    <artifactId>ws-client</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <name>ws-client</name>
    <url>http://maven.apache.org</url>

    <properties>
        <cxf.version>2.5.2</cxf.version>
        <java.version>1.6</java.version>
    </properties>


    <dependencies>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>

          


        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>${cxf.version}</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
                           
<sourceRoot>${basedir}/target/gen-src</sourceRoot>
                            <defaultOptions>
                                <extraargs>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-autoNameResolution</extraarg>
                                </extraargs>
                            </defaultOptions>
                            <wsdlOptions>
                                <wsdlOption>
                                   
<wsdl>${basedir}/src/main/resources/wsdl/main/AdminService.wsdl</wsdl>
                                </wsdlOption>
                                <wsdlOption>
                                   
<wsdl>${basedir}/src/main/resources/wsdl/main/FileService.wsdl</wsdl>
                                </wsdlOption>
                                <wsdlOption>
                                   
<wsdl>${basedir}/src/main/resources/wsdl/main/SearchService.wsdl</wsdl>
                                </wsdlOption>

                            

                                <wsdlOption>
                                   
<wsdl>${basedir}/src/main/resources/wsdl/legacy/DocumentService.wsdl</wsdl>
                                </wsdlOption>
                                <wsdlOption>
                                   
<wsdl>${basedir}/src/main/resources/wsdl/legacy/SearchService.wsdl</wsdl>
                                    <extraargs>
                                        <extraarg>-p</extraarg>
                                       
<extraarg>com.serengetisystems.eintranet.ws.searchService</extraarg>
                                    </extraargs>
                                </wsdlOption>
v                                <wsdlOption>
                                   
<wsdl>${basedir}/src/main/resources/wsdl/legacy/MetadataService.wsdl</wsdl>
                                </wsdlOption>
                                <wsdlOption>
                                   
<wsdl>${basedir}/src/main/resources/wsdl/legacy/FolderService.wsdl</wsdl>
                                    <extraargs>
                                        <extraarg>-p</extraarg>
                                       
<extraarg>com.serengetisystems.eintranet.ws.folderService</extraarg>
                                    </extraargs>
                                </wsdlOption>
                            </wsdlOptions>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
			
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

  
Made a little test app and deployed that to tomcat, no problems here either.

Then the fun started, like most of my working year so fun I'm figting
getting things deployed onto weblogic 11g (10.3.5.0), the code won't run on
weblogic, weblogic as usual has it's own implementation of things deployed
which clash, this is the error produced.

java.lang.ClassCastException:
weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler cannot be cast to
org.apache.cxf.frontend.ClientProxy

Consulting the documentation, it says package as an ear and setting the
following prefered application pacakges
http://cxf.apache.org/docs/application-server-specific-configuration-guide.html#ApplicationServerSpecificConfigurationGuide-WebLogic)

I've tried, all three things suggest in documentation...

    <prefer-application-packages>
        <package-name>javax.jws.*</package-name>
    </prefer-application-packages>

tried...

	<prefer-application-packages>
		<package-name>javax.jws.*</package-name>
		<package-name>org.apache.xerces.*</package-name> 
        <package-name>org.apache.xalan.*</package-name>
	</prefer-application-packages>
  
tried adding the xml section as well

<xml> 
	<parser-factory> 
	
<saxparser-factory>org.apache.xerces.jaxp.SAXParserFactoryImpl</saxparser-factory> 
	
<document-builder-factory>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</document-builder-factory> 
	
<transformer-factory>org.apache.xalan.processor.TransformerFactoryImpl</transformer-factory> 
	</parser-factory> 
</xml>


These all produce the same error

java.lang.NoClassDefFoundError: javax/jws/WebService

Googling around for weblogic cxf it's popped up a few times that the issue
relates to the geronimo-ws-metadata_2.0_spec-1.1.2.jar. This jar isn't part
of my build, its not a dependency of cxf-rt-frontend-jaxws or
cxf-rt-transports-http.

Could really do with some help, javax.jws.WebService is part of the 1.6 JRE,
so I guess in saying prefer only javax.jws.* weblogic excludes the class
from the JRE, which seems crazy to me!

Has anybody got this working?

Thanks,
Dale

--
View this message in context: http://cxf.547215.n5.nabble.com/Deploying-a-WS-Client-to-weblogic-tp5643425p5643425.html
Sent from the cxf-user mailing list archive at Nabble.com.

Re: Deploying a WS Client to weblogic

Posted by Rudy Meyer <rm...@morpheustechgroup.com>.
Hi Dale,

I am unable to find the jws-2.0 jar.  Where did you get this?

Thank you
Rudy

--
View this message in context: http://cxf.547215.n5.nabble.com/Deploying-a-WS-Client-to-weblogic-tp5643425p5709010.html
Sent from the cxf-user mailing list archive at Nabble.com.

Re: Deploying a WS Client to weblogic

Posted by ellisd5 <da...@serengeti-systems.com>.
Just a quick updated, I have resolved the issue by adding the jws-2.0 jar to
the deployment ...

        <dependency>
            <groupId>javax</groupId>
            <artifactId>jws</artifactId>
            <version>2.0</version>
        </dependency>

I know it's not the most elegant solution but I don't know how weblogic
works well enough so don't know how to sure prefer the javax.jws classes but
don't ignore the runtime ones, so my sollution is to just proved the java
runtime classes that it's ignoring.

Cheers,
Dale

--
View this message in context: http://cxf.547215.n5.nabble.com/Deploying-a-WS-Client-to-weblogic-tp5643425p5644200.html
Sent from the cxf-user mailing list archive at Nabble.com.