# SlowServiceControl.jcx Sample

This topic inludes the source code for the SlowServiceControl.jcx Sample.

## Sample Location

This sample is located in the following directory in your WebLogic Workshop installation:

BEA_HOME/weblogic81/samples/workshop/SamplesApp/WebServices/controlFactory/

## Sample Source Code

`001 package controlFactory; 002 003 /** 004 * <p>A dummy service that represents a back end service that takes an psuedo-random amount of time to do its work.</p> 005 * @jc:location http-url="SlowService.jws" jms-url="SlowService.jws" 006 * @jc:wsdl file="#SlowServiceWsdl" 007 * @editor-info:link autogen-style="java" source="SlowService.jws" autogen="true" 008 */ 009 public interface SlowServiceControl extends com.bea.control.ControlExtension, com.bea.control.ServiceControl 010 { 011 public static class StartHeader 012 implements java.io.Serializable 013 { 014 public java.lang.String conversationID; 015 public java.lang.String callbackLocation; 016 } 017 018 public static class ContinueHeader 019 implements java.io.Serializable 020 { 021 public java.lang.String conversationID; 022 } 023 024 public static class CallbackHeader 025 implements java.io.Serializable 026 { 027 public java.lang.String conversationID; 028 } 029 030 031 public interface Callback extends com.bea.control.ServiceControl.Callback 032 { 033 /** 034 * Callback that is sent to the client when this service is done doing its work. 035 * @jc:conversation phase="finish" 036 */ 037 public void infoReady (java.lang.String name); 038 039 } 040 041 /** 042 * <p>The request from the client to do some work. After some amount of time, the infoReady callback will be sent to the client.</p> 043 * @jc:conversation phase="start" 044 */ 045 public long requestInfo (java.lang.String name); 046 047 static final long serialVersionUID = 1L; 048 } 049 050 /** @common:define name="SlowServiceWsdl" value:: 051 <?xml version="1.0" encoding="utf-8"?> 052 <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:conv="http://www.openuri.org/2002/04/soap/conversation/" xmlns:cw="http://www.openuri.org/2002/04/wsdl/conversation/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:jms="http://www.openuri.org/2002/04/wsdl/jms/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://workshop.bea.com/SlowService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://workshop.bea.com/SlowService"> 053 <types> 054 <s:schema elementFormDefault="qualified" targetNamespace="http://workshop.bea.com/SlowService" xmlns:s="http://www.w3.org/2001/XMLSchema"> 055 <s:element name="infoReadyResponse"> 056 <s:complexType> 057 <s:sequence/> 058 </s:complexType> 059 </s:element> 060 <s:element name="infoReady"> 061 <s:complexType> 062 <s:sequence> 063 <s:element name="name" type="s:string" minOccurs="0"/> 064 </s:sequence> 065 </s:complexType> 066 </s:element> 067 <s:element name="requestInfo"> 068 <s:complexType> 069 <s:sequence> 070 <s:element name="name" type="s:string" minOccurs="0"/> 071 </s:sequence> 072 </s:complexType> 073 </s:element> 074 <s:element name="requestInfoResponse"> 075 <s:complexType> 076 <s:sequence> 077 <s:element name="requestInfoResult" type="s:long"/> 078 </s:sequence> 079 </s:complexType> 080 </s:element> 081 <s:element name="long" type="s:long"/> 082 </s:schema> 083 084 <s:schema elementFormDefault="qualified" targetNamespace="http://www.openuri.org/2002/04/soap/conversation/"> 085 <s:element name="StartHeader" type="conv:StartHeader"/> 086 <s:element name="ContinueHeader" type="conv:ContinueHeader"/> 087 <s:element name="CallbackHeader" type="conv:CallbackHeader"/> 088 <s:complexType name="StartHeader"> 089 <s:sequence> 090 <s:element minOccurs="0" maxOccurs="1" name="conversationID" type="s:string"/> 091 <s:element minOccurs="0" maxOccurs="1" name="callbackLocation" type="s:string"/> 092 </s:sequence> 093 </s:complexType> 094 <s:complexType name="ContinueHeader"> 095 <s:sequence> 096 <s:element minOccurs="1" maxOccurs="1" name="conversationID" type="s:string"/> 097 </s:sequence> 098 </s:complexType> 099 <s:complexType name="CallbackHeader"> 100 <s:sequence> 101 <s:element minOccurs="1" maxOccurs="1" name="conversationID" type="s:string"/> 102 </s:sequence> 103 </s:complexType> 104 </s:schema> 105 </types> 106 <message name="infoReadySoapIn"> 107 <part name="parameters" element="s0:infoReadyResponse"/> 108 </message> 109 <message name="infoReadySoapOut"> 110 <part name="parameters" element="s0:infoReady"/> 111 </message> 112 <message name="requestInfoSoapIn"> 113 <part name="parameters" element="s0:requestInfo"/> 114 </message> 115 <message name="requestInfoSoapOut"> 116 <part name="parameters" element="s0:requestInfoResponse"/> 117 </message> 118 <message name="infoReadyHttpGetIn"/> 119 <message name="infoReadyHttpGetOut"> 120 <part name="name" type="s:string"/> 121 </message> 122 <message name="requestInfoHttpGetIn"> 123 <part name="name" type="s:string"/> 124 </message> 125 <message name="requestInfoHttpGetOut"> 126 <part name="Body" element="s0:long"/> 127 </message> 128 <message name="infoReadyHttpPostIn"/> 129 <message name="infoReadyHttpPostOut"> 130 <part name="name" type="s:string"/> 131 </message> 132 <message name="requestInfoHttpPostIn"> 133 <part name="name" type="s:string"/> 134 </message> 135 <message name="requestInfoHttpPostOut"> 136 <part name="Body" element="s0:long"/> 137 </message> 138 <message name="StartHeader_literal"> 139 <part name="StartHeader" element="conv:StartHeader"/> 140 </message> 141 <message name="CallbackHeader_literal"> 142 <part name="CallbackHeader" element="conv:CallbackHeader"/> 143 </message> 144 <portType name="SlowServiceSoap"> 145 <operation name="infoReady"> 146 <documentation>Callback that is sent to the client when this service is done doing its work.</documentation> 147 <output message="s0:infoReadySoapOut"/> 148 <input message="s0:infoReadySoapIn"/> 149 </operation> 150 <operation name="requestInfo"> 151 <documentation>&lt;p&gt;The request from the client to do some work. After some amount of time, the infoReady callback will be sent to the client.&lt;/p&gt;</documentation> 152 <input message="s0:requestInfoSoapIn"/> 153 <output message="s0:requestInfoSoapOut"/> 154 </operation> 155 </portType> 156 <portType name="SlowServiceHttpGet"> 157 <operation name="infoReady"> 158 <documentation>Callback that is sent to the client when this service is done doing its work.</documentation> 159 <output message="s0:infoReadyHttpGetOut"/> 160 <input message="s0:infoReadyHttpGetIn"/> 161 </operation> 162 <operation name="requestInfo"> 163 <documentation>&lt;p&gt;The request from the client to do some work. After some amount of time, the infoReady callback will be sent to the client.&lt;/p&gt;</documentation> 164 <input message="s0:requestInfoHttpGetIn"/> 165 <output message="s0:requestInfoHttpGetOut"/> 166 </operation> 167 </portType> 168 <portType name="SlowServiceHttpPost"> 169 <operation name="infoReady"> 170 <documentation>Callback that is sent to the client when this service is done doing its work.</documentation> 171 <output message="s0:infoReadyHttpPostOut"/> 172 <input message="s0:infoReadyHttpPostIn"/> 173 </operation> 174 <operation name="requestInfo"> 175 <documentation>&lt;p&gt;The request from the client to do some work. After some amount of time, the infoReady callback will be sent to the client.&lt;/p&gt;</documentation> 176 <input message="s0:requestInfoHttpPostIn"/> 177 <output message="s0:requestInfoHttpPostOut"/> 178 </operation> 179 </portType> 180 <binding name="SlowServiceSoap" type="s0:SlowServiceSoap"> 181 <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 182 <operation name="infoReady"> 183 <soap:operation soapAction="http://workshop.bea.com/SlowService/infoReady" style="document"/> 184 <cw:transition phase="finish"/> 185 <input> 186 <soap:body use="literal"/> 187 </input> 188 <output> 189 <soap:body use="literal"/> 190 <soap:header wsdl:required="true" message="s0:CallbackHeader_literal" part="CallbackHeader" use="literal" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/> 191 </output> 192 </operation> 193 <operation name="requestInfo"> 194 <soap:operation soapAction="http://workshop.bea.com/SlowService/requestInfo" style="document"/> 195 <cw:transition phase="start"/> 196 <input> 197 <soap:body use="literal"/> 198 <soap:header wsdl:required="true" message="s0:StartHeader_literal" part="StartHeader" use="literal" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/> 199 </input> 200 <output> 201 <soap:body use="literal"/> 202 </output> 203 </operation> 204 </binding> 205 <binding name="SlowServiceHttpGet" type="s0:SlowServiceHttpGet"> 206 <http:binding verb="GET"/> 207 <operation name="infoReady"> 208 <http:operation location="/infoReady"/> 209 <cw:transition phase="finish"/> 210 <input> 211 <mime:mimeXml part="Body"/> 212 </input> 213 <output> 214 <http:urlEncoded/> 215 </output> 216 </operation> 217 <operation name="requestInfo"> 218 <http:operation location="/requestInfo"/> 219 <cw:transition phase="start"/> 220 <input> 221 <http:urlEncoded/> 222 </input> 223 <output> 224 <mime:mimeXml part="Body"/> 225 </output> 226 </operation> 227 </binding> 228 <binding name="SlowServiceHttpPost" type="s0:SlowServiceHttpPost"> 229 <http:binding verb="POST"/> 230 <operation name="infoReady"> 231 <http:operation location="/infoReady"/> 232 <cw:transition phase="finish"/> 233 <input> 234 <mime:mimeXml part="Body"/> 235 </input> 236 <output> 237 <mime:content type="application/x-www-form-urlencoded"/> 238 </output> 239 </operation> 240 <operation name="requestInfo"> 241 <http:operation location="/requestInfo"/> 242 <cw:transition phase="start"/> 243 <input> 244 <mime:content type="application/x-www-form-urlencoded"/> 245 </input> 246 <output> 247 <mime:mimeXml part="Body"/> 248 </output> 249 </operation> 250 </binding> 251 <service name="SlowService"> 252 <documentation>&lt;p&gt;A dummy service that represents a back end service that takes an psuedo-random amount of time to do its work.&lt;/p&gt;</documentation> 253 <port name="SlowServiceSoap" binding="s0:SlowServiceSoap"> 254 <soap:address location="http://localhost:7001/controlFactory/SlowService.jws"/> 255 </port> 256 <port name="SlowServiceHttpGet" binding="s0:SlowServiceHttpGet"> 257 <http:address location="http://localhost:7001/controlFactory/SlowService.jws"/> 258 </port> 259 <port name="SlowServiceHttpPost" binding="s0:SlowServiceHttpPost"> 260 <http:address location="http://localhost:7001/controlFactory/SlowService.jws"/> 261 </port> 262 </service> 263 </definitions> 264 * :: 265 */`