What do you mean by "properly expose" ?
If you just want to create a web service, use xfire spring integration to expose you service directly. Here is a sample web app that do this : http://svn.servicemix.codehaus.org/trunk/assembly/src/sandbox/xfire-binding/src/webapp/WEB-INF/ The recent soap connectors currently allow adding / removing the soap enveloppe / body and
we are working on a better integration of soap / xfire.

As i just said, it is not possible to "guess" which wsdl should be exposed on the http url, but with the upcoming components,
you will be able to give it.

Cheers,
Guillaume Nodet

Jeffrey Puro wrote:

I guess what my real question is how do I use either HttpInOutBinding or
HttpConnector to properly expose an xfire web service over HTTP.  I've
been trying to do this for several days now and unfortunately haven't
been able to get this to work.  Any help would be appreciated.

Thanks,

Jeff

-----Original Message-----
From: Guillaume Nodet [mailto:[EMAIL PROTECTED] Sent: Thursday, December 01, 2005 3:20 PM
To: [email protected]
Subject: Re: [servicemix-user] Using HttpSoapInOutBinding

The wsdl generated by the HttpSoapConnector should not be used.
It can not be the wsdl of the echo component, because the component that

is invoked
is not know, and could be a service that can not be described by a wsdl,

such as a
content based router.

If you want to query the wsdl of a component, you should do so by using
the
ComponentContext.getEndpointDescriptor method.

Guillaume

Jeffrey Puro wrote:

I am attempting to use the new
org.servicemix.components.http.HttpSoapInOutBinding class and when I
navigate to the URL that's bound to this component and try and display
the WSDL of it for some reason it's not displaying the wsdl of the
actual xfire service bean that I want to expose.  Any ideas?  The url I
am navigating to looks something like this:

http://localhost:8080/servicemix-example/jbi/soap/?wsdl

Here is the WSDL output that gets displayed:

<?xml version="1.0" encoding="UTF-8" ?> - <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:tns="http://http.components.servicemix.org";
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
targetNamespace="http://http.components.servicemix.org";>
- <wsdl:types>
- <xsd:schema targetNamespace="http://http.components.servicemix.org";
elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:element name="invokeInOutin0" type="xsd:anyType" /> <xsd:element name="invokeInOutout" type="xsd:anyType" /> </xsd:schema>
</wsdl:types>
- <wsdl:message name="invokeInOutRequest">
<wsdl:part element="tns:invokeInOutin0" name="invokeInOutin0" /> </wsdl:message>
- <wsdl:message name="invokeInOutResponse">
<wsdl:part element="tns:invokeInOutout" name="invokeInOutout" /> </wsdl:message>
- <wsdl:portType name="InOutServicePortType">
- <wsdl:operation name="invokeInOut">
<wsdl:input message="tns:invokeInOutRequest"
name="invokeInOutRequest"
/> <wsdl:output message="tns:invokeInOutResponse" name="invokeInOutResponse" /> </wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="InOutServiceHttpBinding"
type="tns:InOutServicePortType">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"; /> - <wsdl:operation name="invokeInOut"> <wsdlsoap:operation soapAction="" /> - <wsdl:input name="invokeInOutRequest"> <wsdlsoap:body use="literal" /> </wsdl:input>
- <wsdl:output name="invokeInOutResponse">
<wsdlsoap:body use="literal" /> </wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="InOutService">
- <wsdl:port binding="tns:InOutServiceHttpBinding"
name="InOutServiceHttpPort">
<wsdlsoap:address
location="http://localhost:8080/servicemix-example/jbi/soap/echoService
/
" /> </wsdl:port>
</wsdl:service>
</wsdl:definitions>



-----------------------------------------------------------------------
-
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xbean.org/schemas/spring/1.0";
        xmlns:spring="http://xbean.org/schemas/spring/1.0";
        xmlns:sm="http://servicemix.org/config/1.0";
        xmlns:my="http://servicemix.org/demo/";
  xmlns:foo="http://servicemix.org/demo/";
        xmlns:xfire="http://xfire.components.servicemix.org";>

<!-- the JBI container -->
<sm:container spring:id="jbi"
    rootDir="../wdir"
    useMBeanServer="true"
createMBeanServer="true" installationDirPath="../install"
    deploymentDirPath="../deploy"
monitorInstallationDirectory="true" dumpStats="true" statsInterval="10" transactionManager="#transactionManager">

  <sm:activationSpecs>

    <sm:activationSpec componentName="httpBinding"
service="http:httpBinding" destinationService="http:echoService">
      <sm:component><bean
class="org.servicemix.components.http.HttpInOutBinding"
/></sm:component>
    </sm:activationSpec>

    <sm:activationSpec componentName="soapBinding"
service="soap:soapBinding" destinationService="xfire:echoService">
      <sm:component><bean
class="org.servicemix.components.http.HttpSoapInOutBinding"
/></sm:component>
    </sm:activationSpec>

    <!--  a simple Echo service to test InOut message exchanges using
HTTP-->
    <sm:activationSpec componentName="echo"
service="http:echoService" >
      <sm:component>
        <bean
class="com.sterling.servicemix.component.ExampleComponent">
                        <property
name="property"><value>name</value></property>
                  </bean>
      </sm:component>
    </sm:activationSpec>
<sm:activationSpec componentName="soapBinding"
service="soap:soapBinding" destinationService="xfire:echoService">
                <sm:component>
                  <bean
class="org.servicemix.components.http.HttpSoapConnector">
                        <property name="host" value="localhost"/>
                        <property name="port" value="8081"/>
                  </bean>
                </sm:component>
          </sm:activationSpec>

          <sm:activationSpec componentName="xfireBinding"
service="xfire:echoService">
                <sm:component>
                        <bean
class="org.servicemix.components.xfire.XFireBinding">
                                <property name="xfire" ref="xfire"/>
                        </bean>
                </sm:component>
          </sm:activationSpec>

        </sm:activationSpecs>

</sm:container>
<bean id="echo"
class="com.sterling.servicemix.component.xfire.EchoImpl"
singleton="true"/>
<bean name="echoService"
class="org.codehaus.xfire.spring.ServiceBean">
  <property name="serviceBean"><value>echo</value></property>
  <property name="serviceFactory" ref="xfire.serviceFactory"/>
  <property name="xfire" ref="xfire"/>
</bean>

<!-- the JCA container -->
<bean id="jencks" class="org.jencks.JCAContainer" singleton="true">

  <!-- lets use the default configuration of work manager and
transaction manager-->
  <property name="bootstrapContext">
    <bean class="org.jencks.factory.BootstrapContextFactoryBean">
      <property name="threadPoolSize" value="25"/>
    </bean>
  </property>

  <!-- the JCA Resource Adapter -->
  <property name="resourceAdapter">
    <bean id="activeMQResourceAdapter"
class="org.activemq.ra.ActiveMQResourceAdapter" singleton="true">
      <property name="serverUrl" value="tcp://localhost:61636"/>
    </bean>
  </property>
</bean>

<bean id="transactionManager"
class="org.jencks.factory.TransactionManagerFactoryBean"/>
</beans>








Reply via email to