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.

Reply via email to