You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsif-user@ws.apache.org by Oliver Schneider <ol...@orkelsfelsen.de> on 2009/12/14 12:44:09 UTC

Problem with WSIF service invcation

Hello everybody,

I need some urgent help concerning the following problem:

I wrote a custom Web service using WSIF which I would like to invokefrom my BPEL process, pass along as input a string and want to returnas output a complex type message.
I try to set the content of the complex type from within the Java class that is called by the WSIF interface operation.

My WSDL looks as follows:

<?xml version="1.0" encoding="utf-8" ?> 
<wsdl:definitions xmlns:pub="http://xmlns.oracle.com/Application2/podl_soa/podl_soa_bpel/publication"
  targetNamespace="http://xmlns.oracle.com/Application2/podl_soa/podl_soa_bpel/publication"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
  xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
  xmlns:main="http://xmlns.oracle.com/Application2/podl_soa/podl_soa_bpel"
  xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
  xmlns:ncc="http://publications.europe.eu/ncc"
  xmlns:arch="http://publications.europe.eu/archive"
  xmlns:par="http://publications.europe.eu/parameters"
  xmlns:ext="http://publications.europe.eu/external">

    <!--wsdl:import namespace="http://xmlns.oracle.com/Application2/podl_soa/podl_soa_bpel"
    location="../../../podl_soa_bpel.wsdl"/-->

    <wsdl:types>
        <xs:schema>
            <xs:import schemaLocation="../../../xsd/ncc_rules.xsd"
                     namespace="http://publications.europe.eu/ncc"/>
            <xs:import schemaLocation="../../../xsd/archive_rules.xsd"
                     namespace="http://publications.europe.eu/archive"/>
            <xs:import schemaLocation="../../../xsd/parameters.xsd"
                     namespace="http://publications.europe.eu/parameters"/>
            <xs:import schemaLocation="../../../xsd/external.xsd"
                     namespace="http://publications.europe.eu/external"/>
            <xs:complexType name="PublicationRules">
                <xs:sequence>
                    <xs:element name="ncc" type="ncc:RuleSet" maxOccurs="1"/>
                    <!--xs:element name="archive" type="arch:ArchiveSet" maxOccurs="1"/-->
                </xs:sequence>
            </xs:complexType>
        </xs:schema>
    </wsdl:types>

    <wsdl:message name="service_request">
        <wsdl:part name="catnum" type="xs:string"/>
    </wsdl:message>
    <wsdl:message name="service_response">
        <wsdl:part name="publicationRules" type="PublicationRules"/>
    </wsdl:message>

  <wsdl:portType name="publication_PT">
    <wsdl:operation name="initialize">
      <wsdl:input message="pub:service_request"/>
      <wsdl:output name="getPublicationRulesOutput" message="pub:service_response"/>
    </wsdl:operation>
  </wsdl:portType>

  <!-- Java binding -->
  <wsdl:binding name="JavaBinding" type="pub:publication_PT">
    <java:binding/>
    <format:typeMapping encoding="Java" style="Java">
      <format:typeMap typeName="xs:string" formatType="java.lang.String"/>
     <format:typeMap typeName="pub:PublicationRules"formatType="com.oracle.xmlns.Application2.podl_soa.podl_soa_bpel.publication.PublicationRules"/>
      <format:typeMap typeName="ncc:RuleSet" formatType="eu.europe.publications.ncc.RuleSet" />
      <format:typeMap typeName="ncc:NccRule" formatType="eu.europe.publications.ncc.NccRule" />      
    </format:typeMapping>
    <wsdl:operation name="initialize">
      <java:operation methodName="getPublicationRules" returnPart="publicationRules"/>
      <wsdl:input/>
      <wsdl:output name="getPublicationRulesOutput"/>
    </wsdl:operation>
  </wsdl:binding>

  <wsdl:service name="PUBLICATION">
    <wsdl:port name="JavaPort" binding="pub:JavaBinding">
      <java:address className="PublicationRulesProvider"/>
    </wsdl:port>
  </wsdl:service>

  <!-- Partner link type -->
  <plnk:partnerLinkType name="publication_LT">
    <plnk:role name="PublicationService">
      <plnk:portType name="pub:publication_PT"/>
    </plnk:role>
  </plnk:partnerLinkType>

</wsdl:definitions>

Within the PublicationRulesProvides I set the content of the return type PublicationRules and return it in the end.

Unfortunately when I deploy everything to the SOA server and run the test, I always receive the following exception:

<remoteFault> <part  name="summary"> <summary>oracle.fabric.common.FabricException: Error while determining return class of method getPublicationRules : The meta information is not consistent.; nested exception is: oracle.integration.thirdparty.apache.wsif.WSIFException: publicationRules</summary> </part> <part  name="detail"> <detail>Error while determining return class of method getPublicationRules : The meta information is not consistent.; nested exception is: oracle.integration.thirdparty.apache.wsif.WSIFException: publicationRules</detail> </part> </remoteFault>
What is strange is that if within the PublicationRulesProvider I onlyinstantiate the return type and immediately return it without settingit, then I arrive at the next step of my workflow.

Does anyone have an idea what I did wrong?

I would greatly appreciate any help to solve this issue!

Kind regards!
              
/*var h = frames.top.main_mail.winLoad();alert(h);