Hi Mike Pls see my comments below;
[EMAIL PROTECTED] wrote: > > I would just like to say, this seems non-intuitive. > > If I have a service tag with a name attribute, I expect the name > specified in the tag to determine the name of my service, not the > arbitrary name of my archive file (which may have versioning > information attached to it). We had this behavior some times ago and we removed that. And now I think its the right way I mean we have to set the service name as the value specified by name attribute. > > Now, if the name attribute is optional then I could understand using > the name of the archive file in the absence of the name attribute. > > My expectation is that the purpose of the services.xml file is > configuration of my services. As such, I would expect any information > in the services.xml to take precedence over arbitrary environment > features like the name of my archive file. can u please create a JIRA , so that I will not forget this > > * > Mike McAngus* > Associate Chief Engineer, Enterprise Architecture > Wendy's International, Inc. > One Dave Thomas Boulevard > Dublin, OH 43017 > 614-764-6776 > > > > *Deepal Jayasinghe* > > 05/16/2006 09:11 AM > Please respond to > [email protected] > > > > To > [email protected] > cc > > Subject > Re: runtime lifecycle implementation semantics > > > > > > > > > > Hi Tony > pls see my comment blow; > > Tony Dean wrote: > > >Deepal, > > > >My wsdl contains: > > > ><service name="WebServiceMaker"> > > ... > ></service> > > > >My services.xml contains: > > > ><service name="WebServiceMaker" scope="application"> > > ... > ></service> > > > >Hence you should be able to associate the service name with the wsdl > service. That's what I thought you were doing in .9x. It seems to > have changed in 1.0. > > > > > We have not changed that. What we have done is if the root element of > the services.xml is <service> then we ignore the name attribute and set > the name as the archive name. If the root element is <serviceGroup> > then the name of the service will be the name of the name attribute. > So change your services.xml to following format and then there wont be > any dependencies on archive file name > <serviceGroup> > <service name="WebServiceMaker" scope="application"> > ... > > </service> > > <serviceGroup> > > >Why are you dependent upon the name of the archive? I changed the > name of the archive (in my case the name of the exploded directory) to > WebServiceMaker (it was SASWebServiceMaker) and it is working as I > expect now. > > > >Thanks. > > > >-----Original Message----- > >From: Deepal Jayasinghe [mailto:[EMAIL PROTECTED] > >Sent: Monday, May 15, 2006 1:02 PM > >To: Tony Dean > >Cc: [email protected] > >Subject: Re: runtime lifecycle implementation semantics > > > >btw what is the name of service archive file , service name always be > the name of the archive file if the services.xml has only one service. > >So wsdl service name should be equal to the name of the service. > > - if the service name is foo.aar (services.xml exactly look like > yours) > > - then wsdl service element should look like > > > > > > > ><service name="foo"> > > <port name="WebServiceMakerPort" > binding="tns:WebServiceMakerBinding"> > > <soap:address location="$WEBSVC_URL$"/> </port> > > > > > > > >Tony Dean wrote: > > > > > > > >>Also, do you know why > >>http://localhost:8080/axis2/services/SASWebServiceMaker?wsdl is > >>returning > >> > >>- <error> > >> <description>Unable to generate WSDL for this service</description> > >> <reason>Either user has not dropped the wsdl into META-INF or > >>operations use message receivers other than RPC.</reason> > >> </error> > >> > >>I'm using RawXMLINOutMessageReceiver. > >> > >>meta-inf/services.xml > >> > >><service name="WebServiceMaker" scope="application"> > >> <description>SAS BI Web Services (WebServiceMaker)</description> > >> <parameter locked="xsd:false" > >>name="ServiceClass">com.sas.web.services.maker.axis2.WebServiceMakerPor > >>tTypeSkeleton</parameter> > >> <operation name="MakeWebService"> > >> <messageReceiver > >>class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> > >> </operation> > >> <operation name="ListWebServices"> > >> <messageReceiver > >>class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> > >> </operation> > >></service> > >> > >>meta-inf/service.wsdl > >> > >><?xml version="1.0" encoding="utf-8"?> > >><definitions name="WebServiceMaker" > >> xmlns="http://schemas.xmlsoap.org/wsdl/" > >> > > targetNamespace="http://support.sas.com/xml/namespace/biwebservices/webservicemaker-9.2" > >> > > xmlns:tns="http://support.sas.com/xml/namespace/biwebservices/webservicemaker-9.2" > >> > > xmlns:typesns="http://support.sas.com/xml/namespace/biwebservices/webservicemaker-9.2" > >> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> > >> > >> <types> > >> <schema xmlns="http://www.w3.org/2001/XMLSchema" > >> > targetNamespace="http://support.sas.com/xml/namespace/biwebservices/webservicemaker-9.2" > >> > xmlns:tns="http://support.sas.com/xml/namespace/biwebservices/webservicemaker-9.2" > >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > >> elementFormDefault="qualified"> > >> > >> <complexType name="StringArrayType"> > >> <sequence> > >> <element name="string" type="string" minOccurs="0" > maxOccurs="unbounded"/> > >> </sequence> > >> </complexType> > >> > >> <element name="MakeWebService" type="tns:MakeWebServiceType"/> > >> <complexType name="MakeWebServiceType"> > >> <sequence> > >> <element name="omrURI" type="string"/> > >> <element name="omrUserID" type="string"/> > >> <element name="omrPassword" type="string"/> > >> <element name="storedProcessPaths" > type="tns:StringArrayType"/> > >> <element name="serviceName" type="string"/> > >> </sequence> > >> </complexType> > >> > >> <element name="MakeWebServiceResponse" > type="tns:MakeWebServiceResponseType"/> > >> <complexType name="MakeWebServiceResponseType"> > >> <sequence> > >> <element name="MakeWebServiceResult" type="string"/> > >> </sequence> > >> </complexType> > >> > >> <element name="ListWebServices" type="tns:ListWebServicesType"/> > >> <complexType name="ListWebServicesType"/> > >> > >> <element name="ListWebServicesResponse" > type="tns:ListWebServicesResponseType"/> > >> <complexType name="ListWebServicesResponseType"> > >> <sequence> > >> <element name="ListWebServicesResult" > type="tns:StringArrayType"/> > >> </sequence> > >> </complexType> > >> > >> <element name="FaultException" type="tns:FaultException"/> > >> <complexType name="FaultException"> > >> <sequence> > >> <element name="ExceptionMessage" type="string" > minOccurs="0" maxOccurs="unbounded"/> > >> </sequence> > >> </complexType> > >> > >> </schema> > >> </types> > >> > >> <message name="MakeWebServiceRequest"> > >> <part name="parameters" element="typesns:MakeWebService"/> > >> </message> > >> <message name="MakeWebServiceResponse"> > >> <part name="parameters" element="typesns:MakeWebServiceResponse"/> > >> </message> > >> <message name="ListWebServicesRequest"> > >> <part name="parameters" element="typesns:ListWebServices"/> > >> </message> > >> <message name="ListWebServicesResponse"> > >> <part name="parameters" element="typesns:ListWebServicesResponse"/> > >> </message> > >> <message name="FaultException"> > >> <part name="fault" element="typesns:FaultException"/> > >> </message> > >> > >> <portType name="WebServiceMakerPortType"> > >> <operation name="MakeWebService"> > >> <input message="tns:MakeWebServiceRequest"/> > >> <output message="tns:MakeWebServiceResponse"/> > >> <fault name="fault" message="tns:FaultException"/> > >> </operation> > >> <operation name="ListWebServices"> > >> <input message="tns:ListWebServicesRequest"/> > >> <output message="tns:ListWebServicesResponse"/> > >> </operation> > >> </portType> > >> > >> <binding name="WebServiceMakerBinding" > type="tns:WebServiceMakerPortType"> > >> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" > style="document"/> > >> <operation name="MakeWebService"> > >> <soap:operation soapAction=""/> > >> <input> > >> <soap:body use="literal"/> > >> </input> > >> <output> > >> <soap:body use="literal"/> > >> </output> > >> <fault name="fault"> > >> <soap:fault name="fault" use="literal"/> > >> </fault> > >> </operation> > >> <operation name="ListWebServices"> > >> <soap:operation soapAction=""/> > >> <input> > >> <soap:body use="literal"/> > >> </input> > >> <output> > >> <soap:body use="literal"/> > >> </output> > >> </operation> > >> </binding> > >> > >> <service name="WebServiceMaker"> > >> <port name="WebServiceMakerPort" > binding="tns:WebServiceMakerBinding"> > >> <soap:address location="$WEBSVC_URL$"/> > >> </port> > >> </service> > >></definitions> > >> > >> > >> > >>-----Original Message----- > >>From: Deepal Jayasinghe [mailto:[EMAIL PROTECTED] > >>Sent: Thursday, May 11, 2006 12:07 AM > >>To: Tony Dean > >>Subject: Re: runtime lifecycle implementation semantics > >> > >>Service scope will be equal to the scope of the service. The life > time of the service is the life time of the service context. > >> > >>Tony Dean wrote: > >> > >> > >> > >> > >> > >>>Deepal, > >>> > >>>I forgot to ask. How do you configure the service context scope? > I assume in service.xml. Thanks. > >>> > >>>-----Original Message----- > >>>From: Deepal Jayasinghe [mailto:[EMAIL PROTECTED] > >>>Sent: Tuesday, May 09, 2006 11:45 AM > >>>To: [email protected] > >>>Subject: Re: runtime lifecycle implementation semantics > >>> > >>>Hi Tony > >>>pls see my in line comments > >>> > >>>Tony Dean wrote: > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>>>Hi , > >>>> > >>>>Could you please answer a few questions about lifecycle and > runtime contexts? > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>Life cycle of a service is determine by its scope , you can deploy a > >>>service in one of the following scopes > >>> - request scope : life time of the service will be the life time of > >>>request processing > >>> - transport scope : The life time of the service will be the life > >>>time of the transport session and most of the time transport session > >>>is manged by cookies > >>> - soap session scope : The scope maintained using service group id. > >>>- application scope : The life time of the service will be the life > >>>time of the system > >>> > >>>Here the service impl class will be stored in ServiceContext , so > for each scope you will be having service context and its life time > vary depending on the scope. > >>>for example , > >>>- if the service is deployed in application scope , then there will > be only one servicecontex for that service , o.w there can be multiple > service context for a given service on a given time. > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>>>You have addressed the issue of service lifecycle by providing > init(ServiceContext) and destroy(ServiceContext) callbacks that are > called during service initialization and service destruction, > respectively. Now as I understand it you also have a > setOperationContext(OperationContext) callback that is called on every > service invocation to provide an operation context. > >>>> > >>>>>From the operation context, I can get the message context in one > of two way it seems: > >>>> > >>>>Map map = operationContext.getMessageContexts(); > >>>> > >>>>In this case, I'm not sure what to do with multiple message > contexts. Can you explain the need for a map? > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>Operation context is to represent a given MEP (Message Exchange > >>>Patterns) , for a given MEP there can be multiple messages so there > can be multiple message contexts as well. That is why you can see a > Map in operation context. It should be note that each message in a > given mep has a unique name. > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>>>MessageContext context = operationContext.getMessageContext(String); > >>>> > >>>>In this case, I'm not sure what input String is designating. Can > you explain? > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>The value of the string is the corresponding message label or the > name in a given mep. For an example if the MEP is in-out , then the > value could be "in" or "out" > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>>>If there is documentation, please direct me to it. I could not > gather enough information from your javadoc. > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>I am very sorry for that :( > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>>>The reason that I need the message context in the first place is > so that I can create a detailed SOAP fault if an exception occurs: > >>>> > >>>> > >>>>messageContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAM > >>>>E, soapFaultCode); > >>>> > >>>>messageContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NA > >>>>ME, soapFaultReason); > >>>> > >>>>messageContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NA > >>>>M > >>>>E, soapFaultDetail); > >>>> > >>>>Maybe there is a better way to create custom, detailed faults now > so that I do not need to set message context properties. Please let > me know that as well. > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>I think Chinthaka can answer this better than me :) > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>>>Thank you for your time! > >>>> > >>>>-Tony > >>>> > >>>>Tony Dean > >>>>SAS Institute Inc. > >>>>919.531.6704 > >>>>[EMAIL PROTECTED] > >>>> > >>>>SAS... The Power to Know > >>>>http://www.sas.com > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>-- > >>>Thanks, > >>>Deepal > >>>................................................................ > >>>~Future is Open~ > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>-- > >>Thanks, > >>Deepal > >>................................................................ > >>~Future is Open~ > >> > >> > >> > >> > >> > >> > >> > >> > > > >-- > >Thanks, > >Deepal > >................................................................ > >~Future is Open~ > > > > > > > > > > > > > > > > -- > Thanks, > Deepal > ................................................................ > ~Future is Open~ > > > -- Thanks, Deepal ................................................................ ~Future is Open~
