never mind.  I figured it out.
consumer su bean.xml is:

 <http:endpoint service="pbank:Account"
                 endpoint="pbankAccountEP"
                 targetService="ibank:Account"
                 targetEndpoint="bankProviderEP"
                 role="consumer" 
                
locationURI="http://localhost:8080/bank/services/AccountService";
                 defaultMep="http://www.w3.org/2004/08/wsdl/in-out";
                 soap="true" />

seems I was missing the targetEndpoint which is needed when specifying a
targetServices.

so works now.

I use the soap ui eclipse plugin to fire a request to 8080 for the account
service.
It gets mapped to the provider, and goes out on 8081 which is tomcat with
axis...

So....

client can access the esb.
can put a service from a back end (tomcat/axis in this case) on the bus.
can route the consumer to the provider.
all tucked into a service assembley.

I've not run into any routing security.... is there a way to specify
security rules on NMR?

rbuskens wrote:
> 
> I've been working through this myself for a while now.
> 
> What I was trying to do, and I think it is similiar, is the following:
> 
> external consumer --> http service consumer with targetServer = ---> http
> service provider --> external soap web service
> 
> I am getting a service availabe from the consumer into service mix.
> When I try to run it it fails as it can't route to the target. (service
> not found).
> 
> So it seems... according to this post I've got to involve some other
> pieces, such as eip:wireTap.
> 
> So you can't target a consumer to a provider?
> 
>   <http:endpoint service="pbank:Account"
>                  endpoint="pbankAccountEP"
>                  targetService="ibank:Account"
>                  role="consumer" 
>                 
> locationURI="http://localhost:8080/bank/services/AccountService/";
>                  defaultMep="http://www.w3.org/2004/08/wsdl/in-out";
>                  soap="true" /> 
> 
>   <http:endpoint service="ibank:Account"
>                  endpoint="bankProviderEP"
>                  role="provider" 
>                 
> locationURI="http://localhost:8081/bank/services/AccountService/";
>                 
> wsdlResource="http://localhost:8081/bank/services/AccountService?wsdl";
>                  defaultMep="http://www.w3.org/2004/08/wsdl/in-out";
>                  soap="true"  />   
> 
> 
> 
> gnodet wrote:
>> 
>> Nice post, this is worth a wiki page -- whenever you want ;)
>> 
>> I have a few remarks:
>>   * The provider endpoints are not used in this example as the eip
>> routers
>> redirect to the saaj bindings
>>     you can use them instead of the saaj bindings by switching the
>>      <eip:exchange-target service="myns:targetForAxis" /> on the eip
>> routers
>> to
>>      <eip:exchange-target service="ns1:AxisWebservice" />
>>   * On the consumer definitions, the targetInterfaceName is not needed
>> and
>> will not be used as the
>>     targetServiceName is specified
>>   * On the http providers endpoint, the targetService is not used (this
>> is
>> only for consumers)
>> 
>> Cheers,
>> Guillaume Nodet
>> 
>> On 7/20/06, Alessio D'Innocenti <[EMAIL PROTECTED]> wrote:
>>>
>>> After many, many, too many attempts, finally I have understood how to
>>> expose external webservice, that is how to proxy one or more webservices
>>> (wsdl included).
>>> (servicemix.xml file is attached)
>>>
>>> Suppose I have two webservice to proxy at urls
>>> http://pc-webservice:8080/axis/services/AxisWebservice
>>> http://pc-webservice2:8080/xfire/services/XFireWebservice
>>>
>>> 1) I have to connect the wsdl and the remote webservices to the
>>> endpoints (providers)
>>>
>>>                             <http:endpoint service="ns1:AxisWebservice"
>>>                                 endpoint="axisWebserviceEP"
>>> targetService="ns1:AxisWebservice"
>>>                                 role="provider"
>>>
>>> locationURI="http://pc-webservice:8080/axis/services/AxisWebservice";
>>>
>>> wsdlResource="http://pc-webservice:8080/axis/services/AxisWebservice?wsdl";
>>> />
>>>                             <http:endpoint service="ns2:XFireWebservice"
>>>                                 endpoint="xfireWebserviceEP"
>>> targetService="ns2:XFireWebservice"
>>>                                 role="provider"
>>>
>>> locationURI="http://pc-webservice2:8080/xfire/services/XFireWebservice";
>>>
>>> wsdlResource="
>>> http://pc-webservice2:8080/xfire/services/XFireWebservice?wsdl";
>>> />
>>>
>>> 1) I have to make a connector for riceiving requests form clients
>>> (consumers). I used http-component to make this:
>>>
>>>                            <http:endpoint
>>>                                 service="ns1:AxisWebservice"
>>> endpoint="axisWebserviceEP"
>>>                                 targetService="myns:routerForAxis"
>>> role="consumer" soap="true"
>>>
>>> targetInterfaceName="ns1:AxisWebservicePortType"
>>>
>>> locationURI="http://localhost:8080/services/AxisService/";
>>>
>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-out"; />
>>>                             <http:endpoint service="ns2:XFireWebservice"
>>>                                 endpoint="xfireWebserviceEP"
>>> targetService="myns:routerForXFire"
>>>                                 role="consumer" soap="true"
>>>
>>>                                
>>> targetInterfaceName="ns1:XFireWebserviceSEI"
>>>
>>> locationURI="http://172.30.10.183:8888/services/XFireService/";
>>>
>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-out"; />
>>>
>>> 3) I have to create an invoker for the webservice
>>>
>>>         <sm:activationSpec componentName="axisServiceComponent"
>>>                 service="myns:targetForAxis" endpoint="axisService">
>>>                 <sm:component>
>>>                     <bean
>>> class="org.apache.servicemix.components.saaj.SaajBinding">
>>>                         <property name="soapAction" value="" />
>>>                         <property name="soapEndpoint">
>>>                             <bean
>>> class="javax.xml.messaging.URLEndpoint">
>>>                                 <constructor-arg
>>> value="http://pc-webservice:8080/axis/services/AxisWebservice"; />
>>>                             </bean>
>>>                         </property>
>>>                     </bean>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>             <sm:activationSpec componentName="xfireServiceComponent"
>>>                 service="myns:targetForXFire" endpoint="xfireService">
>>>                 <sm:component>
>>>                     <bean
>>> class="org.apache.servicemix.components.saaj.SaajBinding">
>>>                         <property name="soapAction" value="" />
>>>                         <property name="soapEndpoint">
>>>                             <bean
>>> class="javax.xml.messaging.URLEndpoint">
>>>                                 <constructor-arg
>>> value="http://pc-webservice2:8080/xfire/services/XFireWebservice"; />
>>>                             </bean>
>>>                         </property>
>>>                     </bean>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>
>>> 4)  Now let's create a service for redirecting the request, for example
>>> the wireTrap router.
>>>
>>>             <sm:activationSpec componentName="wireTrapAxis">
>>>                 <sm:component>
>>>                     <eip:component>
>>>                         <eip:endpoints>
>>>                             <eip:wire-tap
>>> endpoint="wireTrapAxisEndpoint"
>>>                                 service="myns:axisWireTrap">
>>>                                 <eip:target>
>>>                                     <eip:exchange-target
>>>                                         service="myns:targetForAxis" />
>>>                                 </eip:target>
>>>                                 <eip:outListener>
>>>                                     <eip:exchange-target
>>>                                         service="myns:trace" />
>>>                                 </eip:outListener>
>>>                             </eip:wire-tap>
>>>                         </eip:endpoints>
>>>                     </eip:component>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>             <sm:activationSpec componentName="wireTrapXFire">
>>>                 <sm:component>
>>>                     <eip:component>
>>>                         <eip:endpoints>
>>>                             <eip:wire-tap
>>> endpoint="wireTrapXFireEndpoint"
>>>                                 service="myns:xfireWireTrap">
>>>                                 <eip:target>
>>>                                     <eip:exchange-target
>>>                                         service="myns:targetForXFire" />
>>>                                 </eip:target>
>>>                                 <eip:outListener>
>>>                                     <eip:exchange-target
>>>                                         service="myns:trace" />
>>>                                 </eip:outListener>
>>>                             </eip:wire-tap>
>>>                         </eip:endpoints>
>>>                     </eip:component>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>
>>> The myns:trace service is simply a logger components that log messages
>>>
>>> 5) The chain is finished now we have the two external webservices
>>> exposed at urls
>>>       http://localhost:8080/services/AxisService/
>>>       http://localhost:8080/services/XFireService/
>>>
>>>      and their wsdl
>>>
>>>       http://localhost:8080/services/AxisService?wsdl
>>>       http://localhost:8080/services/XFireService?wsdl
>>>
>>> 6) complete listing of servicemix.xml and some explanation
>>>
>>> <!-- Namespaces of the webservices wsdl must match the local namespaces
>>> of the servicemix local services.
>>>     Take a look at the ns1 and ns2 namespaces.
>>>     You can retrieve this namespaces from the first line of the wsdl
>>> document
>>>     as attribute of the root tag definitions.
>>>     <definitions name="AxisWebservice"
>>> targetNamespace="http://axis.webservice.namespace";>
>>>
>>>     The myns namespace is a user choosen namespace for dividing external
>>> service from servicemix internal services
>>> -->
>>>
>>> <beans xmlns:sm="http://servicemix.apache.org/config/1.0";
>>>     xmlns:eip="http://servicemix.apache.org/eip/1.0";
>>>     xmlns:http="http://servicemix.apache.org/http/1.0";
>>>     xmlns:ns1="http://axis.webservice.namespace";
>>>     xmlns:ns2="http://xfire.webservice.namespace";
>>>     xmlns:myns="http://myNameSpace/servicemix/1.0";>
>>>
>>>     <!-- the JBI container -->
>>>     <sm:container id="jbi" useMBeanServer="true"
>>>         createMBeanServer="true" dumpStats="true" statsInterval="10">
>>>         <sm:activationSpecs>
>>>             <sm:activationSpec componentName="provider">
>>>                 <sm:component>
>>>                     <http:component>
>>>                         <http:endpoints>
>>>                             <!-- REMEBER: Namespaces of the webservices
>>> wsdl must match the local
>>>                                 namespaces of the servicemix local
>>> services.
>>>                                 You can retrieve this namespace from the
>>> first line of the wsdl document
>>>                                 as attribute of the root tag
>>> definitions.
>>>                                 <definitions name="AxisWebservice"
>>> targetNamespace="http://axis.webservice.namespace";>
>>>
>>>                                 The name of the local servicemix service
>>> and targetService
>>>                                 (service="ns1:AxisWebservice"
>>> targetService="ns1:AxisWebservice")
>>>                                 must match the name of the webservice.
>>> This information is in the wsdl too, as
>>>                                 attribute of tag <service
>>> name="AxisWebservice"> (at the end of wsdl)
>>>
>>>                                 The endpoint name
>>> (endpoint="axisWebserviceEP") is a your choice.
>>>
>>>                                 The role must be provider
>>> (role="provider")
>>>
>>>                                 The wsdlResource must point to the wsdl
>>> definition
>>>
>>> (wsdlResource="http://pc-webservice:8080/axis/services/AxisWebservice?wsdl
>>> ")
>>>
>>>                                 The locationURI is the address where the
>>> webservice is listening.
>>>
>>> (locationURI="http://pc-webservice:8080/axis/services/AxisWebservice";)
>>>                                 Also this can be retrieved from wsdl as
>>> attribute of tag
>>>                                 <wsdlsoap:address
>>> location="http://pc-webservice:8080/axis/services/AxisWebservice"/>
>>>                                 at the end of wsdl
>>>                             -->
>>>                             <http:endpoint service="ns1:AxisWebservice"
>>>                                 endpoint="axisWebserviceEP"
>>> targetService="ns1:AxisWebservice"
>>>                                 role="provider"
>>>
>>> locationURI="http://pc-webservice:8080/axis/services/AxisWebservice";
>>>
>>> wsdlResource="http://pc-webservice:8080/axis/services/AxisWebservice?wsdl";
>>> />
>>>                             <http:endpoint service="ns2:XFireWebservice"
>>>                                 endpoint="xfireWebserviceEP"
>>> targetService="ns2:XFireWebservice"
>>>                                 role="provider"
>>>
>>> locationURI="http://pc-webservice2:8080/xfire/services/XFireWebservice";
>>>
>>> wsdlResource="
>>> http://pc-webservice2:8080/xfire/services/XFireWebservice?wsdl";
>>> />
>>>                         </http:endpoints>
>>>                     </http:component>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>
>>>             <sm:activationSpec componentName="consumer">
>>>                 <sm:component>
>>>                     <http:component>
>>>                         <http:endpoints>
>>>                             <!-- The name of the local servicemix
>>> service and endpoint must match the linked provider http:endpoint
>>>                                 (service="ns1:AxisWebservice"
>>> endpoint="axisWebserviceEP")
>>>
>>>                                 The role must be consumer
>>> (role="consumer")
>>>
>>>                                 The soap attribute must be true for
>>> compliant wsdl (soap="true")
>>>
>>>                                 The locationURI is the address where
>>> servicemix must expose the webservice.
>>>
>>> (locationURI="http://localhost:8080/services/AxisService/";)
>>>
>>>                                 The targetInterface name is the name of
>>> the interface to expose.
>>>                                 You can retrieve this from wsdl as
>>> attribute of tag <portType name="AxisWebservicePortType">
>>>                                 in the middle of wsdl.
>>>
>>>                                 The defaultMep attribute is for
>>> specifying if the endpoint is for in-out (wait for response)
>>>
>>> (defaultMep="http://www.w3.org/2004/08/wsdl/in-out";)
>>>
>>>                                 The targetService is the servicemix
>>> local service to forwarding received message
>>>                                 (targetService="myns:routerForAxis")
>>>                             -->
>>>                             <http:endpoint service="ns1:AxisWebservice"
>>>                                 endpoint="axisWebserviceEP"
>>> targetService="myns:routerForAxis"
>>>                                 role="consumer" soap="true"
>>>
>>> targetInterfaceName="ns1:AxisWebservicePortType"
>>>
>>> locationURI="http://localhost:8080/services/AxisService/";
>>>
>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-out"; />
>>>                             <http:endpoint service="ns2:XFireWebservice"
>>>                                 endpoint="xfireWebserviceEP"
>>> targetService="myns:routerForXFire"
>>>                                 role="consumer" soap="true"
>>>
>>>                                
>>> targetInterfaceName="ns1:XFireWebserviceSEI"
>>>
>>> locationURI="http://172.30.10.183:8888/services/XFireService/";
>>>
>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-out"; />
>>>                         </http:endpoints>
>>>                     </http:component>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>
>>>             <!-- This component invokes the remote service.
>>>                 The soapAction property is the default soapAction.
>>>                 Without this property set no SOAPAction header is addes
>>> and some
>>>                 webservices providers (like Axis) could not work -->
>>>             <sm:activationSpec componentName="axisServiceComponent"
>>>                 service="myns:targetForAxis" endpoint="axisService">
>>>                 <sm:component>
>>>                     <bean
>>>
>>> class="org.apache.servicemix.components.saaj.SaajBinding">
>>>                         <property name="soapAction" value="" />
>>>                         <property name="soapEndpoint">
>>>                             <bean
>>>                                 class="javax.xml.messaging.URLEndpoint">
>>>                                 <constructor-arg
>>>
>>> value="http://pc-webservice:8080/axis/services/AxisWebservice"; />
>>>                             </bean>
>>>                         </property>
>>>                     </bean>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>             <sm:activationSpec componentName="xfireServiceComponent"
>>>                 service="myns:targetForXFire" endpoint="xfireService">
>>>                 <sm:component>
>>>                     <bean
>>>
>>> class="org.apache.servicemix.components.saaj.SaajBinding">
>>>                         <property name="soapAction" value="" />
>>>                         <property name="soapEndpoint">
>>>                             <bean
>>>                                 class="javax.xml.messaging.URLEndpoint">
>>>                                 <constructor-arg
>>>
>>> value="http://pc-webservice2:8080/xfire/services/XFireWebservice"; />
>>>                             </bean>
>>>                         </property>
>>>                     </bean>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>
>>>             <!-- This is a simple trace component to log messages routed
>>> here -->
>>>             <sm:activationSpec componentName="trace"
>>>                 service="int:trace">
>>>                 <sm:component>
>>>                     <bean xmlns="http://xbean.org/schemas/spring/1.0";
>>>
>>> class="org.apache.servicemix.components.util.TraceComponent" />
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>
>>>             <!-- The routing services -->
>>>             <sm:activationSpec componentName="wireTrapAxis">
>>>                 <sm:component>
>>>                     <eip:component>
>>>                         <eip:endpoints>
>>>                             <eip:wire-tap
>>>                                 endpoint="wireTrapAxisEndpoint"
>>> service="myns:routerForAxis">
>>>                                 <eip:target>
>>>                                     <eip:exchange-target
>>>                                         service="myns:targetForAxis" />
>>>                                 </eip:target>
>>>                                 <eip:outListener>
>>>                                     <eip:exchange-target
>>>                                         service="myns:trace" />
>>>                                 </eip:outListener>
>>>                             </eip:wire-tap>
>>>                         </eip:endpoints>
>>>                     </eip:component>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>             <sm:activationSpec componentName="wireTrapXFire">
>>>                 <sm:component>
>>>                     <eip:component>
>>>                         <eip:endpoints>
>>>                             <eip:wire-tap
>>>                                 endpoint="wireTrapXFireEndpoint"
>>>                                 service="myns:routerForXFire">
>>>                                 <eip:target>
>>>                                     <eip:exchange-target
>>>                                         service="myns:targetForXFire" />
>>>                                 </eip:target>
>>>                                 <eip:outListener>
>>>                                     <eip:exchange-target
>>>                                         service="myns:trace" />
>>>                                 </eip:outListener>
>>>                             </eip:wire-tap>
>>>                         </eip:endpoints>
>>>                     </eip:component>
>>>                 </sm:component>
>>>             </sm:activationSpec>
>>>         </sm:activationSpecs>
>>>     </sm:container>
>>> </beans>
>>>
>>>
>>>
>>>
>>>
>>>
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/External-Webservices-binding-%28the-answer%29-tf1971463s12049.html#a10123457
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to