1 Reply Latest reply on May 28, 2015 8:22 AM by Ashutosh kr

    Failing to create a Web Service (jaxws)

    Carl Ellam-Speed Newbie

      Hi,

       

      Is there any kind person who can help me? I've looked through a lot of material over the weekend and today, trying to figure out how to add a simple jaxws service end point. I'm creating a PoC on JBoss Fuse that has to be completed by the end of the month. I need to be able to connect some dummy standalone java apps to my route via web services. The standalone apps run fine and listen and send via jaxws, but when it comes to JBoss Fuse Spring, it just isn't happening from JBDS. My problem? The following error:

       

       

      [pache.camel.spring.Main.main()] ClassPathXmlApplicationContext WARN  Exception encountered during context initialization - cancelling refresh attempt org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Hello': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.apache.cxf.wsdl11.WSDLEndpointFactory.createEndpointInfo(Lorg/apache/cxf/service/model/ServiceInfo;Lorg/apache/cxf/service/model/BindingInfo;Ljava/util/List;)Lorg/apache/cxf/service/model/EndpointInfo; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93) at org.apache.camel.spring.Main.createDefaultApplicationContext(Main.java:216) at org.apache.camel.spring.Main.doStart(Main.java:156) at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) at org.apache.camel.main.MainSupport.run(MainSupport.java:150) at org.apache.camel.main.MainSupport.run(MainSupport.java:354) at org.apache.camel.spring.Main.main(Main.java:89) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.camel.maven.RunMojo$1.run(RunMojo.java:488) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NoSuchMethodError: org.apache.cxf.wsdl11.WSDLEndpointFactory.createEndpointInfo(Lorg/apache/cxf/service/model/ServiceInfo;Lorg/apache/cxf/service/model/BindingInfo;Ljava/util/List;)Lorg/apache/cxf/service/model/EndpointInfo; at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpointInfo(AbstractWSDLBasedEndpointFactory.java:287) at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:144) at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:159) at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1694) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)

       

      I've copied a simple Hello jaxws class:

       

      package com.oup.pocRoutes.Services;
      
      import javax.jws.WebMethod;
      import javax.jws.WebService;
      
      @WebService()
      public class Hello {
        private String message = new String("Hello, ");
      
        public void Hello() {}
      
        @WebMethod()
        public String sayHello(String name) {
          return message + name + ".";
        }
      }
      

       

      A snapshot of my pom.xml (I've edited quite a bit out here. Just trying to add the Hello class for now).

       

       

      <?xml version="1.0" encoding="UTF-8"?>
      <!-- Configures the Camel Context -->
      <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:jaxws="http://cxf.apache.org/jaxws"
       xmlns:cxf="http://camel.apache.org/schema/cxf"
       xsi:schemaLocation="
             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
             http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
             http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
       
         <jaxws:server id="Hello" serviceClass="com.oup.pocRoutes.Services.Hello" address="/Hello" />
       
       <camelContext xmlns="http://camel.apache.org/schema/spring">
        <route id="SplitBatchOvernightDataAndQueue">
          <from uri="file:/C:/PoC/MDM/Batch/Overnight/?delete=false&amp;renameUsingCopy=true&amp;include=^.*\.(csv|CSV)$"/>
          <log message="Received MDM Overnight Batch file - ${file:name}"/>
        </route>
      </camelContext>
      </beans>
      
      

       

      Here is a list of my dependences:

       

        <dependencies>
          <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
            <version>2.15.0</version>
          </dependency>
          <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring</artifactId>
            <version>2.15.0</version>
          </dependency>
          
          <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-camel</artifactId>
            <version>5.10.0</version>
          </dependency>
          
          <dependency>
      <groupId>org.apache.camel</groupId>
         <artifactId>camel-cxf</artifactId>
         <version>2.15.0</version>
          </dependency>
          <!-- logging -->
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.10</version>
          </dependency>
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.10</version>
          </dependency>
          <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
          </dependency>
          <!-- testing -->
          <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-test-spring</artifactId>
            <version>2.15.0</version>
            <scope>test</scope>
          </dependency>
          <dependency>
           <groupId>org.apache.cxf</groupId>
           <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>2.7.15</version>
          </dependency>
          <dependency>
           <groupId>org.apache.cxf</groupId>
           <artifactId>cxf-rt-transports-http</artifactId>
            <version>2.7.15</version>
          </dependency>
          <dependency>
           <groupId>org.apache.cxf</groupId>
           <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>2.7.15</version>
          </dependency>
        </dependencies>
      


      Any ideas why this doesn't work???

       

      Thanks and kind regards

       

      Carl

        • 1. Re: Failing to create a Web Service (jaxws)
          Ashutosh kr Newbie

          Hi,

          Instead of exposing your webservice using <jaxws:server>, you can use camel-cxf component for exposing your webservice.

          for e.g.

          a) first define cxfEndpoint

          <cxf:cxfEndpoint id="serviceEndpoint"address="http://localhost:8080//Hello"

              serviceClass="com.oup.pocRoutes.Services.Hello">

          </cxf:cxfEndpoint>

           

           

          and then you can refer your cxfEndepoint from camel route as folllows:

          <route>

               <from uri="cxf:bean:serviceEndpoint"/>

               <to uri=""/>

          </route>

           

          Regards,

          --Ashu