<?xml version="1.0" encoding="UTF-8"?>
<schema
  targetNamespace="http://xmlns.oracle.com/weblogic/weblogic-webservices"
  xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-webservices"
  xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  version="1.1"
  >
  <xsd:include schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-javaee/1.1/weblogic-javaee.xsd"/>
  <import namespace="http://java.sun.com/xml/ns/j2ee"
    schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"/>

  <element name="weblogic-webservices" type="wls:weblogic-webservicesType"/>

  <complexType name="weblogic-webservicesType">
    <sequence>
      <xsd:element name="webservice-description"
        type="wls:webservice-descriptionType"
        minOccurs="1"
        maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>

            Top level wsee internal DD element

          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="webservice-security"
        type="wls:webservice-securityType"
        minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            Webservice Security configuration element

          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </sequence>
    <xsd:attribute name="version" type="xsd:string" use="optional"/>
  </complexType>

  <complexType name="webservice-descriptionType">
    <sequence>
      <xsd:element name="webservice-description-name"
        type="j2ee:string"/>
      <xsd:element name="webservice-type" default="JAXRPC" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The Web Service Type.  This is needed because WebLogic supports JAX-RPC Web Service with 181 annotations.

          </xsd:documentation>
        </xsd:annotation>
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
            <xsd:enumeration value="JAXRPC"/>
            <xsd:enumeration value="JAXWS"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:element>
      <xsd:element name="wsdl-publish-file"
        type="j2ee:string"
        minOccurs="0"/>

      <xsd:element name="port-component"
        type="wls:port-componentType"
        minOccurs="0"
        maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="webservice-securityType">
    <sequence>
      <xsd:element name="mbean-name"
        type="j2ee:string"/>
    </sequence>
  </complexType>

  <complexType name="port-componentType">
    <sequence>
      <xsd:element name="port-component-name"
        type="j2ee:string"/>
      <xsd:element name="service-endpoint-address"
        type="wls:webservice-addressType"
        minOccurs="0"/>
      <xsd:element name="login-config"
        type="j2ee:login-configType"
        minOccurs="0"/>
      <xsd:element name="transport-guarantee"
        type="j2ee:transport-guaranteeType"
        minOccurs="0"/>
      <xsd:element name="deployment-listener-list"
        type="wls:deployment-listener-listType"
        minOccurs="0"/>
      <xsd:element name="wsdl"
        type="wls:wsdlType" minOccurs="0"/>
      <xsd:element name="transaction-timeout"
        type="xsd:nonNegativeInteger"
        minOccurs="0"/>
      <xsd:element name="callback-protocol"
        type="wls:callback-protocolType"
        minOccurs="0"/>
      <xsd:element name="stream-attachments" type="xsd:boolean"
        minOccurs="0" maxOccurs="1"/>
      <xsd:element name="validate-request" type="xsd:boolean"
        minOccurs="0" maxOccurs="1"/>

      <xsd:element name="http-flush-response" type="xsd:boolean"
        minOccurs="0" maxOccurs="1" default="true">
        <xsd:annotation>
          <xsd:documentation>
                  By default the JAX-RPC webservices stack, flushes the response. This flag is used to control this behaviour.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="http-response-buffersize" type="xsd:nonNegativeInteger"
        minOccurs="0" maxOccurs="1" default="0">
        <xsd:annotation>
          <xsd:documentation>
                  Specifies the size of the response Buffer, which is used to cache the request on server side.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="reliability-config" type="wls:reliability-configType"
        nillable="true" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
                  Specifies the reliability configuration for this web service port component..
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="persistence-config" type="wls:persistence-configType"
        nillable="true" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
                  Specifies the persistence configuration for this web service port component..
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="buffering-config" type="wls:buffering-configType"
        nillable="true" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
                  Specifies the buffering configuration for this web service port component..
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

	  <xsd:element name="wsat-config" type="wls:wsat-configType" minOccurs="0" maxOccurs="1">
		<xsd:annotation>
		  <xsd:documentation>
				  Specifies the transaction configuration for this web service port component.
		  </xsd:documentation>
		</xsd:annotation>
	  </xsd:element>

      <xsd:element name="operation" type="wls:operation-componentType"
        minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>
                  Specifies the transaction configuration for this web service port component.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

	</sequence>
  </complexType>

  <xsd:complexType name="operation-componentType">
    <xsd:sequence>
      <xsd:element name="name" type="j2ee:string"/>
	  <xsd:element name="wsat-config" type="wls:wsat-configType" minOccurs="0" maxOccurs="1">
		<xsd:annotation>
		  <xsd:documentation>
				  Specifies the transaction configuration for this web service port component..
		  </xsd:documentation>
		</xsd:annotation>
	  </xsd:element>

	</xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="wsdlType">
    <xsd:sequence>
      <xsd:element name="exposed" type="xsd:boolean"/>
    </xsd:sequence>
  </xsd:complexType>

  <complexType name="deployment-listener-listType">
    <sequence>
      <xsd:element name="deployment-listener"
        type="j2ee:string" minOccurs="1" maxOccurs="unbounded"/>

    </sequence>
  </complexType>

  <complexType name="webservice-addressType">
    <sequence>
      <xsd:element name="webservice-contextpath"
        type="j2ee:string"/>

      <xsd:element name="webservice-serviceuri"
        type="j2ee:string"/>
    </sequence>
  </complexType>

  <complexType name="callback-protocolType">
    <xsd:simpleContent>
      <xsd:restriction base="j2ee:string">
        <xsd:enumeration value="http"/>
        <xsd:enumeration value="https"/>
        <xsd:enumeration value="jms"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </complexType>

  <complexType name="reliability-configType">
    <sequence>
      <xsd:element name="customized"
                   type="xsd:boolean"
                   minOccurs="0"/>
      <xsd:element name="inactivity-timeout"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="base-retransmission-interval"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="retransmission-exponential-backoff"
                   type="xsd:boolean"
                   minOccurs="0"/>
      <xsd:element name="non-buffered-source"
                   type="xsd:boolean"
                   minOccurs="0"/>
      <xsd:element name="acknowledgement-interval"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="sequence-expiration"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="buffer-retry-count"
                   type="xsd:int"
                   minOccurs="0"/>
      <xsd:element name="buffer-retry-delay"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="non-buffered-destination"
                   type="xsd:boolean"
                   minOccurs="0"/>
      <xsd:element name="messaging-queue-jndi-name"
                   type="j2ee:string"
                   minOccurs="0"/>
      <xsd:element name="messaging-queue-mdb-run-as-principal-name"
                   type="j2ee:string"
                   minOccurs="0"/>
    </sequence>
  </complexType>

  <complexType name="persistence-configType">
    <sequence>
      <xsd:element name="customized"
                   type="xsd:boolean"
                   minOccurs="0"/>
      <xsd:element name="default-logical-store-name"
                   type="j2ee:string"
                   minOccurs="0"/>
    </sequence>
  </complexType>

  <complexType name="buffering-configType">
    <sequence>
      <xsd:element name="customized"
                   type="xsd:boolean"
                   minOccurs="0"/>
      <xsd:element name="request-queue"
                   type="wls:buffering-queueType"
                   minOccurs="0"/>
      <xsd:element name="response-queue"
                   type="wls:buffering-queueType"
                   minOccurs="0"/>
      <xsd:element name="retry-count"
                   type="xsd:int"
                   minOccurs="0"/>
      <xsd:element name="retry-delay"
                   type="j2ee:string"
                   minOccurs="0"/>
    </sequence>
  </complexType>

  <complexType name="buffering-queueType">
    <sequence>
      <xsd:element name="name"
                   type="j2ee:string"
                   nillable="true" minOccurs="0"/>
      <xsd:element name="enabled"
                   type="xsd:boolean"
                   minOccurs="0"/>
      <xsd:element name="connection-factory-jndi-name"
                   type="j2ee:string"
                   nillable="true" minOccurs="0"/>
      <xsd:element name="transaction-enabled"
                   type="xsd:boolean"
                   minOccurs="0"/>
    </sequence>
  </complexType>


</schema>
