-
1. Re: Creating a web service from a wsdl
andy_wagg Jan 31, 2005 10:17 AM (in response to 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 Jan 31, 2005 10:28 AM (in response to 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 Feb 1, 2005 6:41 AM (in response to andy_wagg)What part of the wiki is unclear?
-
4. Re: Creating a web service from a wsdl
andy_wagg Feb 1, 2005 10:20 AM (in response to 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 Feb 1, 2005 10:38 AM (in response to andy_wagg)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 Feb 2, 2005 6:14 AM (in response to 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.