You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "John Miller (JIRA)" <ji...@apache.org> on 2009/10/21 17:58:59 UTC

[jira] Commented: (AXIS2-1810) Cannot deploy multiple versions of the same service

    [ https://issues.apache.org/jira/browse/AXIS2-1810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12768296#action_12768296 ] 

John Miller commented on AXIS2-1810:
------------------------------------

I going through the same issue right now. Currently, we are upgrading from Axis 1.x to Axis 2.x and are facing issues with schema and wsdl changes/versioning changes during this upgrade due to additional requirements from our clients.

I understand what Gul is asking. I tried to handle this by making modifications to our WSDL files to include 2 different ports (see below) under the Service element as well as 2 different binding elements. This allows me to use the same operation names and gives me the ability to point these to a specific schema version. The autogenerate code works as desired as well as generating separate package names per version. However, this also generates 2 soap binding implementations i.e.: SOAPBindingImplV4.java and SOAPBindingImplV5.java. Now, I need to either create a separate request/response handling class or duplicate code in each soap binding impl class. Neither is really desirable. 

My question, is there a better method to this madness? What is the industry standard or Axis's methodology/architecture to accompolish/tackle this type of verioning issue? Would a global handler that intercepts all incoming and outgoing messages work better from an architecture standpoint? If so, what code or framework is available under Axis 2.x? Does the Axis team have any examples that would so this type of architect/code samples?

================================== MyWsdl File ====================================
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" 
                     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
                     xmlns:tns="http://example/platforms" 
	xmlns:v5="http://example/v5.0/platforms" 
                     xmlns:v4="http://example/v4.0/platforms" 
	xmlns:ns="http://example/v4.0/common" 
                     xmlns:ns1="http://example/v4.0/error" 
	targetNamespace="http://example/platforms" name="Platforms">
	<types>
		<xs:schema targetNamespace="http://example/v5.0/platforms">
			<xs:include schemaLocation="v5/Platforms.xsd"/>
		</xs:schema>
		<xs:schema targetNamespace="http://example/v4.0/platforms">
			<xs:include schemaLocation="v4/Platforms.xsd"/>
		</xs:schema>
	</types>
	<message name="PlatformSummaryRequestMessage">
		<part name="request" element="v5:PlatformSummaryRequest"/>
	</message>
	<message name="PlatformSummaryResponseMessage">
		<part name="request" element="v5:PlatformSummaryResponse"/>
	</message>
	<message name="ShipQueryRequestMessage">
		<part name="request" element="v5:ShipQueryRequest"/>
	</message>
	<message name="ShipQueryResponseMessage">
		<part name="request" element="v5:ShipQueryResponse"/>
	</message>
	<message name="PlatformModRequestMessage">
		<part name="request" element="v5:PlatformModRequest"/>
	</message>
	<message name="PlatformModResponseMessage">
		<part name="request" element="v5:PlatformModResponse"/>
	</message>
	<portType name="PlatformsPortTypeV5">
		<operation name="PlatformSummaryRequestOperation">
			<input message="tns:PlatformSummaryRequestMessage"/>
			<output message="tns:PlatformSummaryResponseMessage"/>
		</operation>
		<operation name="ShipQueryRequestOperation">
			<input message="tns:ShipQueryRequestMessage"/>
			<output message="tns:ShipQueryResponseMessage"/>
		</operation>
		<operation name="PlatformModRequestOperation">
			<input message="tns:PlatformModRequestMessage"/>
			<output message="tns:PlatformModResponseMessage"/>
		</operation>
	</portType>
	<portType name="PlatformsPortTypeV4">
		<operation name="PlatformSummaryRequestOperation">
			<input message="tns:PlatformSummaryRequestMessage"/>
			<output message="tns:PlatformSummaryResponseMessage"/>
		</operation>
		<operation name="ShipQueryRequestOperation">
			<input message="tns:ShipQueryRequestMessage"/>
			<output message="tns:ShipQueryResponseMessage"/>
		</operation>
		<operation name="PlatformModRequestOperation">
			<input message="tns:PlatformModRequestMessage"/>
			<output message="tns:PlatformModResponseMessage"/>
		</operation>
	</portType>
	<binding name="PlatformsSOAPBindingV5" type="tns:PlatformsPortTypeV5">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<operation name="PlatformSummaryRequestOperation">
			<soap:operation soapAction="PlatformSummaryRequestOperationAction/v5"/>
			<input>
				<soap:body use="literal"/>
			</input>
			<output>
				<soap:body use="literal"/>
			</output>
		</operation>
		<operation name="ShipQueryRequestOperation">
			<soap:operation soapAction="ShipQueryRequestOperationAction/v5"/>
			<input>
				<soap:body use="literal"/>
			</input>
			<output>
				<soap:body use="literal"/>
			</output>
		</operation>
		<operation name="PlatformModRequestOperation">
			<soap:operation soapAction="PlatformModRequestOperationAction/v5"/>
			<input>
				<soap:body use="literal"/>
			</input>
			<output>
				<soap:body use="literal"/>
			</output>
		</operation>
	</binding>
	<binding name="PlatformsSOAPBindingV4" type="tns:PlatformsPortTypeV4">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<operation name="PlatformSummaryRequestOperation">
			<soap:operation soapAction="PlatformSummaryRequestOperationAction/v4"/>
			<input>
				<soap:body use="literal"/>
			</input>
			<output>
				<soap:body use="literal"/>
			</output>
		</operation>
		<operation name="ShipQueryRequestOperation">
			<soap:operation soapAction="ShipQueryRequestOperationAction/v4"/>
			<input>
				<soap:body use="literal"/>
			</input>
			<output>
				<soap:body use="literal"/>
			</output>
		</operation>
		<operation name="PlatformModRequestOperation">
			<soap:operation soapAction="PlatformModRequestOperationAction/v4"/>
			<input>
				<soap:body use="literal"/>
			</input>
			<output>
				<soap:body use="literal"/>
			</output>
		</operation>
	</binding>
	<service name="Platforms">
		<port name="PlatformsV5" binding="tns:PlatformsSOAPBindingV5">
			<soap:address location="http://localhost:8080/ws/services/Platforms/v5"/>
		</port>
		<port name="PlatformsV4" binding="tns:PlatformsSOAPBindingV4">
			<soap:address location="http://localhost:8080/ws/services/Platforms/v4"/>
		</port>
	</service>
</definitions>
===================================================================================

Thanks. Any information or comment is welcome.


> Cannot deploy multiple versions of the same service
> ---------------------------------------------------
>
>                 Key: AXIS2-1810
>                 URL: https://issues.apache.org/jira/browse/AXIS2-1810
>             Project: Axis 2.0 (Axis2)
>          Issue Type: New Feature
>          Components: kernel
>    Affects Versions: 1.1
>            Reporter: Gul Onural
>            Assignee: Deepal Jayasinghe
>
> I am trying to deploy multiple versions of the same web service without changing the name of the service and wsdl. Instead, I want to be able to do that by changing namespace of the service in the wsdl file and location of the service. For example :
> MyService - version 1
> =================
> ServiceName = MyService
> Location = http://localhost/axis2/services/v1.0/MyService
> Wsdl namespace = http://www.mycompany.com/Namespace1
> MyService - version 2
> =================
> ServiceName = MyService
> Location = http://localhost/axis2/services/v2.0/MyService
> Wsdl namespace = http://www.mycompany.com/Namespace2
> Currently Axis2 doesn't have a mechanism to deploy multiple versions of the same service by chaging its location and wsdl namespace. The services repository has not been designed to accomadate multiple versions of the same service (you can have only one service repository).
> It can probably be done providing support for deploying multiple versions of the same service similar to the mechansim provided for deploying multiple versions of the same "module".
> Gul

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.