Uploaded image for project: 'JBoss Web Services'
  1. JBoss Web Services
  2. JBWS-1807

HTTP bindings for Provider

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Done
    • Icon: Major Major
    • jbossws-2.0.2
    • jbossws-2.0.1
    • jbossws-native
    • None

      When using the XML/HTTP binding with the Provider interface, you get warnings about "Unsupported binding", and subsequent errors. Because the WSDL11Reader does not support XML/HTTP, you can only get limited XML/HTTP support by using annotations. In particular, there does not seem to be a way to accept HTTP GET requests.

      The Provider interface does work, as long as a <soap:binding/> is used in the WSDL. The logs are:

      01:14:56,029 INFO [TomcatDeployer] deploy, ctxPath=/jaxws, warUrl=.../tmp/deploy/tmp8703jaxws-exp.war/
      01:14:56,372 WARN [WSDL11Reader] Unprocessed extension element:

      {http://schemas.xmlsoap.org/wsdl/http/}

      address
      01:14:56,372 WARN [WSDL11Reader] Unsupported binding:

      {http://schemas.xmlsoap.org/wsdl/http/}

      binding
      01:14:56,372 WARN [WSDL11Reader] Unsupported binding:

      {http://schemas.xmlsoap.org/wsdl/http/}

      binding
      01:14:56,372 ERROR [MainDeployer] Could not start deployment: file:/C:/services/jboss-4.0.5.GA/server/default/deploy/jaxws.war
      org.jboss.ws.WSException: Cannot find port in wsdl:

      {http://ws.com/}

      ProviderPort
      at org.jboss.ws.metadata.builder.MetaDataBuilder.replaceAddressLocation(MetaDataBuilder.java:338)
      at org.jboss.ws.metadata.builder.jaxws.JAXWSProviderMetaDataBuilder.buildProviderMetaData(JAXWSProviderMetaDataBuilder.java:147)
      at org.jboss.ws.metadata.builder.jaxws.JAXWSServerMetaDataBuilder.setupProviderOrWebService(JAXWSServerMetaDataBuilder.java:55)
      at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilderJSE.buildMetaData(JAXWSMetaDataBuilderJSE.java:63)
      at org.jboss.wsf.stack.jbws.UnifiedMetaDataDeploymentAspect.create(UnifiedMetaDataDeploymentAspect.java:66)
      at org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl.deploy(DeploymentAspectManagerImpl.java:115)
      at org.jboss.wsf.container.jboss40.ArchiveDeployerHook.deploy(ArchiveDeployerHook.java:97)
      at org.jboss.wsf.container.jboss40.DeployerInterceptor.start(DeployerInterceptor.java:90)
      at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
      at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
      at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
      at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
      at $Proxy49.start(Unknown Source)
      at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)
      at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)
      at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)
      at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
      at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
      at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
      at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
      at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
      at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
      at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
      at $Proxy8.deploy(Unknown Source)
      at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
      at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:610)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)

      The provider bean is:

      @WebServiceProvider(wsdlLocation = "WEB-INF/wsdl/provider2.wsdl", portName = "ProviderPort", serviceName = "Provider", targetNamespace = "http://ws.com/")
      @ServiceMode(value = Service.Mode.PAYLOAD)
      @BindingType(value=HTTPBinding.HTTP_BINDING)
      public class Bean2 implements Provider<Source> {
      public Source invoke(Source source)

      { String body = "<reply><descr>I am replying with your input!</descr></reply>"; Source dest = new StreamSource( new ByteArrayInputStream(body.getBytes())); return dest; }

      }

      The WSDL is:

      <?xml version='1.0'?>
      <definitions name='ProviderService'
      xmlns='http://schemas.xmlsoap.org/wsdl/'
      xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
      xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
      xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
      xmlns:tns='http://ws.com/'
      targetNamespace='http://ws.com/'
      xmlns:xsd='http://www.w3.org/2001/XMLSchema'>

      <message name='m1'>
      <part name='part1' type='xsd:binary' />
      </message>

      <message name='m2'>
      <part name='response' type='xsd:binary' />
      </message>

      <portType name="pt1">
      <operation name="o1">
      <input message="tns:m1" />
      <output message="tns:m2" />
      </operation>
      </portType>
      <portType name='pt2'>
      <operation name='o1'>
      <input message='tns:echo' />
      <output message='tns:echoResponse' />
      </operation>
      </portType>

      <binding name="b1" type="tns:pt2">
      <!-- The soap:binding seems to be needed by org.jboss.ws.metadata.builder.MetaDataBuilder.replaceAddressLocation.
      -->
      <!--
      <soap:binding style='document'
      transport='http://schemas.xmlsoap.org/soap/http' />
      -->
      <http:binding verb="GET" />
      <operation name="o1">
      <http:operation location="o1" />
      <input>
      <http:urlEncoded />
      </input>
      <output>
      <mime:content type="text/xml" />
      </output>
      </operation>
      </binding>
      <binding name='b2' type='tns:pt2'>
      <soap:binding style='document'
      transport='http://schemas.xmlsoap.org/soap/http' />
      <operation name='o1'>
      <soap:operation soapAction='' />
      <input>
      <soap:body use='literal' />
      </input>
      <output>
      <soap:body use='literal' />
      </output>
      </operation>
      </binding>

      <service name="ProviderService">
      <port name="ProviderPort" binding="tns:b1">
      <http:address location="http://example.com/" />
      </port>
      </service>

      </definitions>

              tdiesler@redhat.com Thomas Diesler
              njbeckford Jonah Beckford (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved: