Hi,

If you want to send attachment over soap with jms transport, could you consider to use the cxf bc component with mtom over jms transport?
Freeman

On 2009-8-3, at 下午8:02, lekkie wrote:



Hi Guys,

While trying to create a WSDL for my consumer JMS BC on servicemix I got the
following error

<loc-message>WSDL is not WS-I BP compliant: [binding
"{http://services.is}isJMSFileConsumerInBinding"; : Basic Profile Violation #R2401: A wsdl:binding element in a DESCRIPTION MUST use WSDL SOAP Binding
as defined in WSDL 1.1 Section 3.]</loc-message>
<stack-trace><![CDATA[javax.jbi.management.DeploymentException: WSDL is not WS-I BP compliant: [binding "{http:// services.is}isJMSFileConsumerInBinding" : Basic Profile Violation #R2401: A wsdl:binding element in a DESCRIPTION
MUST use WSDL SOAP Binding as defined in WSDL 1.1 Section 3.]

        at
org .apache .servicemix .jms .endpoints .JmsSoapConsumerEndpoint.validateWsdl1(JmsSoapConsumerEndpoint.java: 198)

        at
org .apache .servicemix .jms .endpoints .JmsSoapConsumerEndpoint.validate(JmsSoapConsumerEndpoint.java:138)

While the exception is in itself self explanatory, I ws wondering what the
best way it is to generate a WSDL.

Here is the WSDL I generated from Netbeans wizard:

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="isJMSFileConsumer" targetNamespace="http://services.is "
   xmlns="http://schemas.xmlsoap.org/wsdl/";
   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:tns="http://services.is";
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype";
xmlns:jms="http://schemas.sun.com/jbi/wsdl-extensions/jms/";>
   <types/>
   <message name="isJMSFileConsumerInOperationRequest">
       <part name="part1" type="xsd:base64Binary"/>
   </message>
   <portType name="isJMSFileConsumerInPortType">
       <operation name="isJMSFileConsumerInOperation">
           <input name="input1"
message="tns:isJMSFileConsumerInOperationRequest"/>
       </operation>
   </portType>
   <binding name="isJMSFileConsumerInBinding"
type="tns:isJMSFileConsumerInPortType">
       <jms:binding/>
       <operation name="isJMSFileConsumerInOperation">
           <jms:operation destination="DefaultQueue"
destinationType="Queue"/>
           <input name="input1">
<jms:message messageType="BytesMessage" bytesPart="part1"/>
           </input>
       </operation>
   </binding>
   <service name="isJMSFileConsumerIn">
       <port name="isJMSFileConsumerInPortType"
binding="tns:isJMSFileConsumerInBinding">
           <jms:address connectionURL="mq://localhost:61616"/>
       </port>
   </service>
   <plnk:partnerLinkType name="isJMSFileConsumer">
<!-- A partner link type is automatically generated when a new port
type is added. Partner link types are used by BPEL processes.
In a BPEL process, a partner link represents the interaction between the BPEL process and a partner service. Each partner link is associated with a
partner link type.
A partner link type characterizes the conversational relationship between
two services. The partner link type can have one or two roles.-->
       <plnk:role name="isJMSFileConsumerInPortTypeRole"
portType="tns:isJMSFileConsumerInPortType"/>
   </plnk:partnerLinkType>
</definitions>



And here is the xbean.xml for this service unit

<beans xmlns:jms="http://servicemix.apache.org/jms/1.0";
         xmlns:is="http://services.is";
         xmlns:amqpool="http://jencks.org/amqpool/2.0";>


    <classpath>
               <location>.</location>
   </classpath>

   <bean id="connectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory">

       <property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost: 61616" />
            </bean>
       </property>

       <!--Configure maximum connections used by the pool -->
       <property name="maxConnections" value="10" />

       <!--Configure maximum sessions per connection -->
       <property name="maximumActive" value="10" />
  </bean>

  <!-- add the sender endpoint here -->
  <bean id="myMarshaler"
class="org.apache.servicemix.components.util.BinaryFileMarshaler"/>

   <jms:soap-consumer service="is:isJMSFileConsumer"
                         endpoint="isJMSFileConsumer"
                         wsdl="classpath:isJMSFileConsumer.wsdl"
                         validateWsdl="true"
                         targetService="is:isFTPWriter"
                         destinationName="queue/A/Soap"
                         connectionFactory="#connectionFactory"/>
</beans>

What is the best way to generate a WSDL for a binary message (attachment)
through JMS BC over SOAP?

kr.
--
View this message in context: 
http://www.nabble.com/Binary-Message-WSDL-for-JMS-BC-%28Consumer%29-tp24789561p24789561.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.



--
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com

Reply via email to