6 Replies Latest reply on Feb 2, 2005 6:14 AM by andy_wagg

    Creating a web service from a wsdl

    andy_wagg

      I seem to be going around in circles trying to figure out exactly what I have to do. There don't seem to be any complete examples of doing this with JBoss, just bits and bits which are axis with tomcat.

      I have a wsdl file, XMLSDA.wsdl and have used wsdl2java to generate the server side proxy, stubs and skeletons. I have a whole host of generated files and specifically for my Service,
      Service_BindingImpl, Service_BindingSkeleton, Service_BindingStub, Service_Port, Service_Service and ServiceLocator.

      I have 2 questions, in my web.xml, which class do i need to specify as my servlet-class.

      Secondly, in my webservices.xml, what do i need to specify for my port-component-name, wsdl-port and service-endpoint-interface.

      Thanks for any help.

        • 1. Re: Creating a web service from a wsdl
          andy_wagg

          I'm not sure it was helping with my wsdl service being called Service as well, so i have changed this to MyService. I know have the files MyService.java, MyServiceLocator.java, Service.java, ServiceImpl.java, ServiceSkeleton and ServiceStub. It's still not clear which classes should be referenced in the web.xml and webservices.xml.

          • 2. Re: Creating a web service from a wsdl
            andy_wagg

            XMLDA.wsdl

            <?xml version="1.0" encoding="utf-8"?>
            <!--
             COPYRIGHT (c) 2003 OPC Foundation. All rights reserved.
             http://www.opcfoundation.org
             Use subject to the OPC Foundation License Agreement found at the following URL:
             http://www.opcfoundation.org/Downloads/LicenseAgreement.asp
            -->
            <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://opcfoundation.org/webservices/XMLDA/1.0/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://opcfoundation.org/webservices/XMLDA/1.0/" xmlns="http://schemas.xmlsoap.org/wsdl/">
             <types>
             <s:schema elementFormDefault="qualified" targetNamespace="http://opcfoundation.org/webservices/XMLDA/1.0/">
             <s:element name="GetStatus">
             <s:complexType>
             <s:attribute name="LocaleID" type="s:string" />
             <s:attribute name="ClientRequestHandle" type="s:string" />
             </s:complexType>
            
             </s:element>
             <s:element name="GetStatusResponse">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="GetStatusResult" type="s0:ReplyBase" />
             <s:element minOccurs="0" maxOccurs="1" name="Status" type="s0:ServerStatus" />
             </s:sequence>
             </s:complexType>
             </s:element>
            
             <s:complexType name="ReplyBase">
             <s:attribute name="RcvTime" type="s:dateTime" use="required" />
             <s:attribute name="ReplyTime" type="s:dateTime" use="required" />
             <s:attribute name="ClientRequestHandle" type="s:string" />
             <s:attribute name="RevisedLocaleID" type="s:string" />
             <s:attribute name="ServerState" type="s0:serverState" use="required" />
             </s:complexType>
             <s:simpleType name="serverState">
             <s:restriction base="s:string">
            
             <s:enumeration value="running" />
             <s:enumeration value="failed" />
             <s:enumeration value="noConfig" />
             <s:enumeration value="suspended" />
             <s:enumeration value="test" />
             <s:enumeration value="commFault" />
             </s:restriction>
             </s:simpleType>
             <s:complexType name="ServerStatus">
            
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="StatusInfo" type="s:string" />
             <s:element minOccurs="0" maxOccurs="1" name="VendorInfo" type="s:string" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="SupportedLocaleIDs" type="s:string" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="SupportedInterfaceVersions" type="s0:interfaceVersion" />
             </s:sequence>
             <s:attribute name="StartTime" type="s:dateTime" use="required" />
             <s:attribute name="ProductVersion" type="s:string" />
             </s:complexType>
            
             <s:simpleType name="interfaceVersion">
             <s:restriction base="s:string">
             <s:enumeration value="XML_DA_Version_1_0" />
             </s:restriction>
             </s:simpleType>
             <s:element name="Read">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="Options" type="s0:RequestOptions" />
            
             <s:element minOccurs="0" maxOccurs="1" name="ItemList" type="s0:ReadRequestItemList" />
             </s:sequence>
             </s:complexType>
             </s:element>
             <s:complexType name="RequestOptions">
             <s:attribute default="true" name="ReturnErrorText" type="s:boolean" />
             <s:attribute default="false" name="ReturnDiagnosticInfo" type="s:boolean" />
             <s:attribute default="false" name="ReturnItemTime" type="s:boolean" />
             <s:attribute default="false" name="ReturnItemPath" type="s:boolean" />
            
             <s:attribute default="false" name="ReturnItemName" type="s:boolean" />
             <s:attribute name="RequestDeadline" type="s:dateTime" />
             <s:attribute name="ClientRequestHandle" type="s:string" />
             <s:attribute name="LocaleID" type="s:string" />
             </s:complexType>
             <s:complexType name="ReadRequestItemList">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="Items" type="s0:ReadRequestItem" />
             </s:sequence>
            
             <s:attribute name="ItemPath" type="s:string" />
             <s:attribute name="ReqType" type="s:QName" />
             <s:attribute name="MaxAge" type="s:int" />
             </s:complexType>
             <s:complexType name="ReadRequestItem">
             <s:attribute name="ItemPath" type="s:string" />
             <s:attribute name="ReqType" type="s:QName" />
             <s:attribute name="ItemName" type="s:string" />
             <s:attribute name="ClientItemHandle" type="s:string" />
            
             <s:attribute name="MaxAge" type="s:int" />
             </s:complexType>
             <s:element name="ReadResponse">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="ReadResult" type="s0:ReplyBase" />
             <s:element minOccurs="0" maxOccurs="1" name="RItemList" type="s0:ReplyItemList" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="Errors" type="s0:OPCError" />
             </s:sequence>
            
             </s:complexType>
             </s:element>
             <s:complexType name="ReplyItemList">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="Items" type="s0:ItemValue" />
             </s:sequence>
             <s:attribute name="Reserved" type="s:string" />
             </s:complexType>
             <s:complexType name="ItemValue">
            
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="DiagnosticInfo" type="s:string" />
             <s:element minOccurs="0" maxOccurs="1" name="Value" />
             <s:element minOccurs="0" maxOccurs="1" name="Quality" type="s0:OPCQuality" />
             </s:sequence>
             <s:attribute name="ValueTypeQualifier" type="s:QName" />
             <s:attribute name="ItemPath" type="s:string" />
             <s:attribute name="ItemName" type="s:string" />
             <s:attribute name="ClientItemHandle" type="s:string" />
            
             <s:attribute name="Timestamp" type="s:dateTime" />
             <s:attribute name="ResultID" type="s:QName" />
             </s:complexType>
             <s:complexType name="OPCQuality">
             <s:attribute default="good" name="QualityField" type="s0:qualityBits" />
             <s:attribute default="none" name="LimitField" type="s0:limitBits" />
             <s:attribute default="0" name="VendorField" type="s:unsignedByte" />
             </s:complexType>
             <s:simpleType name="qualityBits">
            
             <s:restriction base="s:string">
             <s:enumeration value="bad" />
             <s:enumeration value="badConfigurationError" />
             <s:enumeration value="badNotConnected" />
             <s:enumeration value="badDeviceFailure" />
             <s:enumeration value="badSensorFailure" />
             <s:enumeration value="badLastKnownValue" />
             <s:enumeration value="badCommFailure" />
             <s:enumeration value="badOutOfService" />
            
             <s:enumeration value="badWaitingForInitialData" />
             <s:enumeration value="uncertain" />
             <s:enumeration value="uncertainLastUsableValue" />
             <s:enumeration value="uncertainSensorNotAccurate" />
             <s:enumeration value="uncertainEUExceeded" />
             <s:enumeration value="uncertainSubNormal" />
             <s:enumeration value="good" />
             <s:enumeration value="goodLocalOverride" />
             </s:restriction>
            
             </s:simpleType>
             <s:simpleType name="limitBits">
             <s:restriction base="s:string">
             <s:enumeration value="none" />
             <s:enumeration value="low" />
             <s:enumeration value="high" />
             <s:enumeration value="constant" />
             </s:restriction>
             </s:simpleType>
            
             <s:complexType name="OPCError">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="Text" type="s:string" />
             </s:sequence>
             <s:attribute name="ID" type="s:QName" use="required" />
             </s:complexType>
             <s:complexType name="ArrayOfFloat">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="float" type="s:float" />
            
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfInt">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="int" type="s:int" />
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfUnsignedInt">
             <s:sequence>
            
             <s:element minOccurs="0" maxOccurs="unbounded" name="unsignedInt" type="s:unsignedInt" />
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfLong">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="long" type="s:long" />
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfUnsignedLong">
            
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="unsignedLong" type="s:unsignedLong" />
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfDouble">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="double" type="s:double" />
             </s:sequence>
             </s:complexType>
            
             <s:complexType name="ArrayOfUnsignedShort">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="unsignedShort" type="s:unsignedShort" />
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfBoolean">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="boolean" type="s:boolean" />
             </s:sequence>
            
             </s:complexType>
             <s:complexType name="ArrayOfString">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfDateTime">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="dateTime" type="s:dateTime" />
            
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfAnyType">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="anyType" nillable="true" />
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfDecimal">
             <s:sequence>
            
             <s:element minOccurs="0" maxOccurs="unbounded" name="decimal" type="s:decimal" />
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfByte">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="byte" type="s:byte" />
             </s:sequence>
             </s:complexType>
             <s:complexType name="ArrayOfShort">
            
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="short" type="s:short" />
             </s:sequence>
             </s:complexType>
             <s:element name="Write">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="Options" type="s0:RequestOptions" />
             <s:element minOccurs="0" maxOccurs="1" name="ItemList" type="s0:WriteRequestItemList" />
            
             </s:sequence>
             <s:attribute name="ReturnValuesOnReply" type="s:boolean" use="required" />
             </s:complexType>
             </s:element>
             <s:complexType name="WriteRequestItemList">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="Items" type="s0:ItemValue" />
             </s:sequence>
             <s:attribute name="ItemPath" type="s:string" />
            
             </s:complexType>
             <s:element name="WriteResponse">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="WriteResult" type="s0:ReplyBase" />
             <s:element minOccurs="0" maxOccurs="1" name="RItemList" type="s0:ReplyItemList" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="Errors" type="s0:OPCError" />
             </s:sequence>
             </s:complexType>
            
             </s:element>
             <s:element name="Subscribe">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="Options" type="s0:RequestOptions" />
             <s:element minOccurs="0" maxOccurs="1" name="ItemList" type="s0:SubscribeRequestItemList" />
             </s:sequence>
             <s:attribute name="ReturnValuesOnReply" type="s:boolean" use="required" />
             <s:attribute default="0" name="SubscriptionPingRate" type="s:int" />
            
             </s:complexType>
             </s:element>
             <s:complexType name="SubscribeRequestItemList">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="Items" type="s0:SubscribeRequestItem" />
             </s:sequence>
             <s:attribute name="ItemPath" type="s:string" />
             <s:attribute name="ReqType" type="s:QName" />
             <s:attribute name="Deadband" type="s:float" />
            
             <s:attribute name="RequestedSamplingRate" type="s:int" />
             <s:attribute name="EnableBuffering" type="s:boolean" />
             </s:complexType>
             <s:complexType name="SubscribeRequestItem">
             <s:attribute name="ItemPath" type="s:string" />
             <s:attribute name="ReqType" type="s:QName" />
             <s:attribute name="ItemName" type="s:string" />
             <s:attribute name="ClientItemHandle" type="s:string" />
             <s:attribute name="Deadband" type="s:float" />
            
             <s:attribute name="RequestedSamplingRate" type="s:int" />
             <s:attribute name="EnableBuffering" type="s:boolean" />
             </s:complexType>
             <s:complexType name="SubscribeReplyItemList">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="Items" type="s0:SubscribeItemValue" />
             </s:sequence>
             <s:attribute name="RevisedSamplingRate" type="s:int" />
             </s:complexType>
            
             <s:complexType name="SubscribeItemValue">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="ItemValue" type="s0:ItemValue" />
             </s:sequence>
             <s:attribute name="RevisedSamplingRate" type="s:int" />
             </s:complexType>
             <s:element name="SubscribeResponse">
             <s:complexType>
             <s:sequence>
            
             <s:element minOccurs="0" maxOccurs="1" name="SubscribeResult" type="s0:ReplyBase" />
             <s:element minOccurs="0" maxOccurs="1" name="RItemList" type="s0:SubscribeReplyItemList" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="Errors" type="s0:OPCError" />
             </s:sequence>
             <s:attribute name="ServerSubHandle" type="s:string" />
             </s:complexType>
             </s:element>
             <s:element name="SubscriptionPolledRefresh">
             <s:complexType>
            
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="Options" type="s0:RequestOptions" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="ServerSubHandles" type="s:string" />
             </s:sequence>
             <s:attribute name="HoldTime" type="s:dateTime" />
             <s:attribute default="0" name="WaitTime" type="s:int" />
             <s:attribute default="false" name="ReturnAllItems" type="s:boolean" />
             </s:complexType>
             </s:element>
            
             <s:complexType name="SubscribePolledRefreshReplyItemList">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="Items" type="s0:ItemValue" />
             </s:sequence>
             <s:attribute name="SubscriptionHandle" type="s:string" />
             </s:complexType>
             <s:element name="SubscriptionPolledRefreshResponse">
             <s:complexType>
             <s:sequence>
            
             <s:element minOccurs="0" maxOccurs="1" name="SubscriptionPolledRefreshResult" type="s0:ReplyBase" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="InvalidServerSubHandles" type="s:string" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="RItemList" type="s0:SubscribePolledRefreshReplyItemList" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="Errors" type="s0:OPCError" />
             </s:sequence>
             <s:attribute default="false" name="DataBufferOverflow" type="s:boolean" />
             </s:complexType>
             </s:element>
             <s:element name="SubscriptionCancel">
            
             <s:complexType>
             <s:attribute name="ServerSubHandle" type="s:string" />
             <s:attribute name="ClientRequestHandle" type="s:string" />
             </s:complexType>
             </s:element>
             <s:element name="SubscriptionCancelResponse">
             <s:complexType>
             <s:attribute name="ClientRequestHandle" type="s:string" />
             </s:complexType>
            
             </s:element>
             <s:element name="Browse">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="PropertyNames" type="s:QName" />
             </s:sequence>
             <s:attribute name="LocaleID" type="s:string" />
             <s:attribute name="ClientRequestHandle" type="s:string" />
             <s:attribute name="ItemPath" type="s:string" />
            
             <s:attribute name="ItemName" type="s:string" />
             <s:attribute name="ContinuationPoint" type="s:string" />
             <s:attribute default="0" name="MaxElementsReturned" type="s:int" />
             <s:attribute default="all" name="BrowseFilter" type="s0:browseFilter" />
             <s:attribute name="ElementNameFilter" type="s:string" />
             <s:attribute name="VendorFilter" type="s:string" />
             <s:attribute default="false" name="ReturnAllProperties" type="s:boolean" />
             <s:attribute default="false" name="ReturnPropertyValues" type="s:boolean" />
             <s:attribute default="false" name="ReturnErrorText" type="s:boolean" />
            
             </s:complexType>
             </s:element>
             <s:simpleType name="browseFilter">
             <s:restriction base="s:string">
             <s:enumeration value="all" />
             <s:enumeration value="branch" />
             <s:enumeration value="item" />
             </s:restriction>
             </s:simpleType>
            
             <s:complexType name="BrowseElement">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="Properties" type="s0:ItemProperty" />
             </s:sequence>
             <s:attribute name="Name" type="s:string" />
             <s:attribute name="ItemPath" type="s:string" />
             <s:attribute name="ItemName" type="s:string" />
             <s:attribute name="IsItem" type="s:boolean" use="required" />
             <s:attribute name="HasChildren" type="s:boolean" use="required" />
            
             </s:complexType>
             <s:complexType name="ItemProperty">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="Value" />
             </s:sequence>
             <s:attribute name="Name" type="s:QName" use="required" />
             <s:attribute name="Description" type="s:string" />
             <s:attribute name="ItemPath" type="s:string" />
             <s:attribute name="ItemName" type="s:string" />
            
             <s:attribute name="ResultID" type="s:QName" />
             </s:complexType>
             <s:element name="BrowseResponse">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="BrowseResult" type="s0:ReplyBase" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="Elements" type="s0:BrowseElement" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="Errors" type="s0:OPCError" />
             </s:sequence>
            
             <s:attribute name="ContinuationPoint" type="s:string" />
             <s:attribute default="false" name="MoreElements" type="s:boolean" />
             </s:complexType>
             </s:element>
             <s:element name="GetProperties">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="ItemIDs" type="s0:ItemIdentifier" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="PropertyNames" type="s:QName" />
            
             </s:sequence>
             <s:attribute name="LocaleID" type="s:string" />
             <s:attribute name="ClientRequestHandle" type="s:string" />
             <s:attribute name="ItemPath" type="s:string" />
             <s:attribute default="false" name="ReturnAllProperties" type="s:boolean" />
             <s:attribute default="false" name="ReturnPropertyValues" type="s:boolean" />
             <s:attribute default="false" name="ReturnErrorText" type="s:boolean" />
             </s:complexType>
             </s:element>
            
             <s:complexType name="ItemIdentifier">
             <s:attribute name="ItemPath" type="s:string" />
             <s:attribute name="ItemName" type="s:string" />
             </s:complexType>
             <s:complexType name="PropertyReplyList">
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="unbounded" name="Properties" type="s0:ItemProperty" />
             </s:sequence>
             <s:attribute name="ItemPath" type="s:string" />
            
             <s:attribute name="ItemName" type="s:string" />
             <s:attribute name="ResultID" type="s:QName" />
             </s:complexType>
             <s:element name="GetPropertiesResponse">
             <s:complexType>
             <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="GetPropertiesResult" type="s0:ReplyBase" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="PropertyLists" type="s0:PropertyReplyList" />
             <s:element minOccurs="0" maxOccurs="unbounded" name="Errors" type="s0:OPCError" />
            
             </s:sequence>
             </s:complexType>
             </s:element>
             </s:schema>
             </types>
             <message name="GetStatusSoapIn">
             <part name="parameters" element="s0:GetStatus" />
             </message>
             <message name="GetStatusSoapOut">
            
             <part name="parameters" element="s0:GetStatusResponse" />
             </message>
             <message name="ReadSoapIn">
             <part name="parameters" element="s0:Read" />
             </message>
             <message name="ReadSoapOut">
             <part name="parameters" element="s0:ReadResponse" />
             </message>
             <message name="WriteSoapIn">
            
             <part name="parameters" element="s0:Write" />
             </message>
             <message name="WriteSoapOut">
             <part name="parameters" element="s0:WriteResponse" />
             </message>
             <message name="SubscribeSoapIn">
             <part name="parameters" element="s0:Subscribe" />
             </message>
             <message name="SubscribeSoapOut">
            
             <part name="parameters" element="s0:SubscribeResponse" />
             </message>
             <message name="SubscriptionPolledRefreshSoapIn">
             <part name="parameters" element="s0:SubscriptionPolledRefresh" />
             </message>
             <message name="SubscriptionPolledRefreshSoapOut">
             <part name="parameters" element="s0:SubscriptionPolledRefreshResponse" />
             </message>
             <message name="SubscriptionCancelSoapIn">
            
             <part name="parameters" element="s0:SubscriptionCancel" />
             </message>
             <message name="SubscriptionCancelSoapOut">
             <part name="parameters" element="s0:SubscriptionCancelResponse" />
             </message>
             <message name="BrowseSoapIn">
             <part name="parameters" element="s0:Browse" />
             </message>
             <message name="BrowseSoapOut">
            
             <part name="parameters" element="s0:BrowseResponse" />
             </message>
             <message name="GetPropertiesSoapIn">
             <part name="parameters" element="s0:GetProperties" />
             </message>
             <message name="GetPropertiesSoapOut">
             <part name="parameters" element="s0:GetPropertiesResponse" />
             </message>
             <portType name="Service">
            
             <operation name="GetStatus">
             <input message="s0:GetStatusSoapIn" />
             <output message="s0:GetStatusSoapOut" />
             </operation>
             <operation name="Read">
             <input message="s0:ReadSoapIn" />
             <output message="s0:ReadSoapOut" />
             </operation>
             <operation name="Write">
            
             <input message="s0:WriteSoapIn" />
             <output message="s0:WriteSoapOut" />
             </operation>
             <operation name="Subscribe">
             <input message="s0:SubscribeSoapIn" />
             <output message="s0:SubscribeSoapOut" />
             </operation>
             <operation name="SubscriptionPolledRefresh">
             <input message="s0:SubscriptionPolledRefreshSoapIn" />
            
             <output message="s0:SubscriptionPolledRefreshSoapOut" />
             </operation>
             <operation name="SubscriptionCancel">
             <input message="s0:SubscriptionCancelSoapIn" />
             <output message="s0:SubscriptionCancelSoapOut" />
             </operation>
             <operation name="Browse">
             <input message="s0:BrowseSoapIn" />
             <output message="s0:BrowseSoapOut" />
            
             </operation>
             <operation name="GetProperties">
             <input message="s0:GetPropertiesSoapIn" />
             <output message="s0:GetPropertiesSoapOut" />
             </operation>
             </portType>
             <binding name="Service" type="s0:Service">
             <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
             <operation name="GetStatus">
            
             <soap:operation soapAction="http://opcfoundation.org/webservices/XMLDA/1.0/GetStatus" style="document" />
             <input>
             <soap:body use="literal" />
             </input>
             <output>
             <soap:body use="literal" />
             </output>
             </operation>
             <operation name="Read">
            
             <soap:operation soapAction="http://opcfoundation.org/webservices/XMLDA/1.0/Read" style="document" />
             <input>
             <soap:body use="literal" />
             </input>
             <output>
             <soap:body use="literal" />
             </output>
             </operation>
             <operation name="Write">
            
             <soap:operation soapAction="http://opcfoundation.org/webservices/XMLDA/1.0/Write" style="document" />
             <input>
             <soap:body use="literal" />
             </input>
             <output>
             <soap:body use="literal" />
             </output>
             </operation>
             <operation name="Subscribe">
            
             <soap:operation soapAction="http://opcfoundation.org/webservices/XMLDA/1.0/Subscribe" style="document" />
             <input>
             <soap:body use="literal" />
             </input>
             <output>
             <soap:body use="literal" />
             </output>
             </operation>
             <operation name="SubscriptionPolledRefresh">
            
             <soap:operation soapAction="http://opcfoundation.org/webservices/XMLDA/1.0/SubscriptionPolledRefresh" style="document" />
             <input>
             <soap:body use="literal" />
             </input>
             <output>
             <soap:body use="literal" />
             </output>
             </operation>
             <operation name="SubscriptionCancel">
            
             <soap:operation soapAction="http://opcfoundation.org/webservices/XMLDA/1.0/SubscriptionCancel" style="document" />
             <input>
             <soap:body use="literal" />
             </input>
             <output>
             <soap:body use="literal" />
             </output>
             </operation>
             <operation name="Browse">
            
             <soap:operation soapAction="http://opcfoundation.org/webservices/XMLDA/1.0/Browse" style="document" />
             <input>
             <soap:body use="literal" />
             </input>
             <output>
             <soap:body use="literal" />
             </output>
             </operation>
             <operation name="GetProperties">
            
             <soap:operation soapAction="http://opcfoundation.org/webservices/XMLDA/1.0/GetProperties" style="document" />
             <input>
             <soap:body use="literal" />
             </input>
             <output>
             <soap:body use="literal" />
             </output>
             </operation>
             </binding>
            
             <service name="MyService">
             <port name="Service" binding="s0:Service">
             <soap:address location="http://antares/myopc"/></port></service>
            </definitions>
            /


            webservices.xml

            <webservices
             xmlns="http://java.sun.com/xml/ns/j2ee"
             xmlns:impl="http://antares/myopc"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd"
             version="1.1">
            
             <webservice-description>
             <webservice-description-name>Service</webservice-description-name>
             <wsdl-file>WEB-INF/wsdl/XMLDA.wsdl</wsdl-file>
             <jaxrpc-mapping-file>WEB-INF/jaxrpc-mapping.xml</jaxrpc-mapping-file>
             <port-component>
             <port-component-name>Service</port-component-name>
            
             <wsdl-port>Service</wsdl-port>
             <service-endpoint-interface>org.opcfoundation.webservices.XMLDA._1_0.ServiceImpl</service-endpoint-interface>
             <service-impl-bean>
             <servlet-link>ServiceServlet</servlet-link>
             </service-impl-bean>
             </port-component>
             </webservice-description>
            
            </webservices>
            


            web.xml

            <?xml version="1.0" encoding="UTF-8"?>
            <web-app
             xmlns="http://java.sun.com/xml/ns/j2ee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
             version="2.4">
            
            <servlet>
             <servlet-name>ServiceServlet</servlet-name>
             <servlet-class>org.opcfoundation.webservices.XMLDA._1_0.Service</servlet-class>
            </servlet>
            
            <servlet-mapping>
             <servlet-name>ServiceServlet</servlet-name>
             <url-pattern>/myopc</url-pattern>
            
            </servlet-mapping>
            
            </web-app>
            


            • 3. Re: Creating a web service from a wsdl
              thomas.diesler

              What part of the wiki is unclear?

              • 4. Re: Creating a web service from a wsdl
                andy_wagg

                My understanding of this is that the wsdl is the starting point for creating a web service. Although in most cases people seem to generate this. However, in my case I have a supplied wsdl file and have generated java from this using wsdl2java --server-side --skeletonDeploy true.

                This generates a set of files, in my case for a web service, MyService and a wsdl service of Service.

                MyService.java
                MyServiceLocator.java

                Service.java
                ServiceImpl.java
                ServiceSkeleton.java
                ServiceStub.java

                What I can't determine is which classes should be specified in the web.xml and webservices.xml

                • 5. Re: Creating a web service from a wsdl
                  thomas.diesler

                  None, JBossWS is about portable J2EE compliant webservices, therefore no dependency on generated axis components.

                  If you want to expose a web service (i.e. server side)
                  use wscompile to generate the SEI and jaxrpc-mapping.xml

                  • 6. Re: Creating a web service from a wsdl
                    andy_wagg

                    Thanks, I think that helped a lot, at least it all worked for a simple example.

                    I've now got a different problem, which i will post separately.