axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Amila Suriarachchi <amilasuriarach...@gmail.com>
Subject Re: Supporting hierarchical service deployment
Date Fri, 04 Sep 2009 08:48:46 GMT
On Fri, Sep 4, 2009 at 11:32 AM, Chinmoy Chakraborty <cchinu@gmail.com>wrote:

>
>
> On Fri, Sep 4, 2009 at 10:22 AM, Amila Suriarachchi <
> amilasuriarachchi@gmail.com> wrote:
>
>>
>>
>>  On Fri, Sep 4, 2009 at 10:05 AM, Chinmoy Chakraborty <cchinu@gmail.com>wrote:
>>
>>> Paul,
>>>
>>> May be I dropped in from nowhere but I like to understand the idea. What
>>> is the purpose of maintaining duplicate data by allowing exact same AAR to
>>> be deployed in two different parts of hierarchy?
>>>
>>  It is not exact AAR file. It is basically organise your AAR file in a
>> directory structure without putting all of the in the root directory.
>>
>> eg.
>> repository/services/admin/AdminService.aar
>> repository/services/management/Management.aar
>> repository/services/tech/v1.1/Tech.aar
>> repository/services/tech/v1.0/Tech.aar
>>
>> if you take latter two cases, it may be two versions of same .aar file
>> which user wants to active at the same time.
>>
>
> CHINMOY>> OK.
>
>
>>
>>
>>> I guess Axis2 should also support same service name with different
>>> namespaces. I have this kind of requirement in our project but right now
>>> it's a limitation.
>>>
>> if you can describe your requirement then we can see how it can be
>> supported.
>>
>> As I understood what you want to have is same service name with different
>> name spaces to distinguish the version.
>> (I assume version depends on the namespace in your case)
>>
>
> CHINMOY>> Not exactly. I have two different services with same service name
> and they do absolutely two different tasks. let me explain: I have one
> function called ABS (returns absolute value, generally long) and a routinecalled ABS
(does some other work than ABS function). Let's say the namespace
> for ABS function is abc.function.ABS and the namespace for ABS routine is
> abc.routine.ABS.
>
> So we can have two different services for the same service name. In AXIS
> 1.x we could do that since there was concept of jws deployment and the
> directory structure was part of the url.
>

This is what now we going to add to Axis2 :)

Once we add this, in your case you can have to ABS services like this

repository/services/abc/function/ABS.aar
repository/services/abc/routine/ABS.aar

Then two services maps to the urls (epr) like this

services/abc/function/ABS
services/abc/routine/ABS

I think this is the proper solution for your problem.

I think, you tend to think in the way you think because Axis2 currently does
not have this concept. This is why this concept is important.

thanks,
Amila.

>
>> Now the problem is what is the epr for these two services. In the above
>> solution epr is mapped to the folder structure. So people can invoke two
>> services with different eprs.
>>
>> In your solution how to determine the service to invoke once a request
>> receive?
>>
>
> CHINMOY>> If we have a parameter in services.xml like
> <serviceNameSpace>abc.function/routine</serviceNameSpace> then in the url
> the service name should be appened with namespace. e.g
>
> ../services/ABS (now)
> ../service/abc.function.ABS
>
> The logic should be just add namespace along with the servicename and the
> namespace is available from the services.xml.
>
> Chinmoy
>
>>
>> thanks,
>> Amila.
>>
>>>
>>> Chinmoy
>>>
>>>   On Thu, Sep 3, 2009 at 4:46 PM, Paul Fremantle <pzfreo@gmail.com>wrote:
>>>
>>>> Chinmoy
>>>>
>>>> I think that is cool, but I guess the aim of Isuru's initial proposal
>>>> was to allow the exact same AAR to be deployed independently in two
>>>> parts of the hierarchy. To me that is a good objective.
>>>>
>>>> Paul
>>>>
>>>> On Thu, Sep 3, 2009 at 11:59 AM, Chinmoy Chakraborty<cchinu@gmail.com>
>>>> wrote:
>>>> > Guys,
>>>> >
>>>> > How about introducing a new parameter (e.g ServiceClassNameSpace) in
>>>> the
>>>> > services.xml to support directory hierarchy in the service?
>>>> >
>>>> > Chinmoy
>>>> >
>>>> > On Thu, Sep 3, 2009 at 3:47 PM, Isuru Suriarachchi <isurues@gmail.com
>>>> >
>>>> > wrote:
>>>> >>
>>>> >> Hi all,
>>>> >>
>>>> >> As using '/' character may cause problems in dispatching, I just
used
>>>> a
>>>> >> separate character ('!') to represent the directory hierarchy in
the
>>>> >> service. This allows all types of services to be deployed
>>>> hierarchically
>>>> >> without any problems (Including RESTful services).
>>>> >>
>>>> >> Ex: if we deploy the Echo service at
>>>> >> /repository/services/foo/bar/1.0.0/echo.aar, service name will be
>>>> >> foo!bar!1.0.0!Echo and the EPR will be like
>>>> >> ../axis2/services/foo!bar!1.0.0!Echo/echoString
>>>> >>
>>>> >> I've attached a new patch to the JIRA
>>>> >> (https://issues.apache.org/jira/browse/AXIS2-4479). This patch
>>>> doesn't
>>>> >> contain any changes in dispatching logics. And also I've implemented
>>>> the
>>>> >> ability to deploy JAXWS, Pojo etc.. (which are coming from the
>>>> axis2.xml)
>>>> >> services hierarchically to make this effort complete. In addition
to
>>>> that,
>>>> >> I've written some deployment tests for hierarchical services.
>>>> >>
>>>> >> Thanks,
>>>> >> ~Isuru
>>>> >>
>>>> >> On Sun, Aug 30, 2009 at 2:48 AM, keith chapman <
>>>> keithgchapman@gmail.com>
>>>> >> wrote:
>>>> >>>
>>>> >>> I've been out of touch with the Axis2 list for some time. Took
a
>>>> while to
>>>> >>> read this thread. Just a few thouths on it.
>>>> >>>
>>>> >>> I don't think that this patch would effect the RESTfull behaviour
in
>>>> any
>>>> >>> way. Its just that the user needs to be extra carefull if he
wants
>>>> to use
>>>> >>> RESTfull services in cunjunction with the hierarchical services
>>>> concept. i.e
>>>> >>> if he has a services called foo do not use foo as a top level
folder
>>>> in your
>>>> >>> hierarchy. Its simple as that. I guess been careful is the price
you
>>>> have to
>>>> >>> pay if you wanna use hierarchical services.
>>>> >>>
>>>> >>> I like the idea of having hierarchical services in Axis2. Well
I did
>>>> it
>>>> >>> once using the extension points of Axis2 but I'm +1 for having
this
>>>> concept
>>>> >>> baked into Axis2.
>>>> >>>
>>>> >>> Also it would be good to base arguments on facts rather than
>>>> religious
>>>> >>> beleifs. Quite a few design desicions made back then when Axis2
was
>>>> designed
>>>> >>> did not take stuff such as this into consideration. Well i'm
not
>>>> blaming the
>>>> >>> initial Axis2 community for that. As the project evolves new
>>>> features such
>>>> >>> as this can be added. Good examples are features such as plugable
>>>> message
>>>> >>> builders/formatters (post 1.1), custom deployers (post 1.2 IIRC),
>>>> the
>>>> >>> binding hierarchy concept (post 1.3) are features that were
added
>>>> later in
>>>> >>> the cycle. I see the hierarchical service deployment feature
as just
>>>> another
>>>> >>> addition to the wide variety of features of Axis2.
>>>> >>>
>>>> >>> Thanks,
>>>> >>> Keith.
>>>> >>>
>>>> >>> On Sat, Aug 29, 2009 at 1:24 PM, Sanjiva Weerawarana
>>>> >>> <sanjiva@opensource.lk> wrote:
>>>> >>>>
>>>> >>>> I forgot to address the issue with not being able to support
>>>> RESTful
>>>> >>>> services. I think we can- we just need to change the REST
>>>> dispatcher (argh
>>>> >>>> if that's what its called its a terrible name!) to look
at the
>>>> context path
>>>> >>>> of the service(s) and try filtering those out first.
>>>> >>>>
>>>> >>>> Sanjiva.
>>>> >>>>
>>>> >>>> On Sat, Aug 29, 2009 at 8:51 PM, Sanjiva Weerawarana
>>>> >>>> <sanjiva@opensource.lk> wrote:
>>>> >>>>>
>>>> >>>>> Deepal, I've read this entire thread and I'm confused
as to why
>>>> you're
>>>> >>>>> objecting.
>>>> >>>>>
>>>> >>>>> First of all, I think Isuru sent this thread into a
bad start by
>>>> using
>>>> >>>>> versioning as the reason for wanting to introduce hierarchical
>>>> service
>>>> >>>>> deployment. That was a mistake but as Andreas' comment
pointed
>>>> out, this is
>>>> >>>>> nothing more than the contextPath concept found in Java
>>>> containers.
>>>> >>>>> Versioning is at most a special case but let's just
take that out
>>>> of the
>>>> >>>>> discussion because this is not about versioning. If
you disagree
>>>> please
>>>> >>>>> explain why.
>>>> >>>>>
>>>> >>>>> Secondly, this can be done outside of Axis2 totally.
All we need
>>>> to do
>>>> >>>>> is write a new deployer and a dispatcher. There's no
need to waste
>>>> time with
>>>> >>>>> this type of pretty un-objective / emotional debate.
However, it
>>>> was
>>>> >>>>> proposed as a mod to axis2 because it significantly
improves axis2
>>>> usability
>>>> >>>>> WITHOUT breaking any existing behavior. Or so was the
belief. So
>>>> let's go
>>>> >>>>> thru the discussion and if the view is that this is
not necessary
>>>> in axis2's
>>>> >>>>> default deployers etc. then no problem.
>>>> >>>>>
>>>> >>>>> Now I will explain why this approach is better than
alternatives.
>>>> The
>>>> >>>>> basic requirement is that having a single flat naming
scheme for
>>>> services is
>>>> >>>>> unnecessarily limiting. Why? Because it requires everyone
to agree
>>>> on the
>>>> >>>>> service name as those names are global. If you're using
Axis2 as a
>>>> library
>>>> >>>>> on a single developer machine that's not an issue. However,
if you
>>>> want to
>>>> >>>>> deploy an axis2 engine to host some number of services
for a
>>>> larger
>>>> >>>>> organization then that invariably results in name conflicts.
I
>>>> assume you
>>>> >>>>> agree that's global names are a limitation.
>>>> >>>>>
>>>> >>>>> How do you fix it? One option is to use some naming
convention
>>>> like
>>>> >>>>> what Java packages did for Java classes. So you can
have
>>>> >>>>> /services/us.finance.address and /uk.services/marketing.address
if
>>>> (say) US
>>>> >>>>> finance and UK marketing orgs both want to have a service
called
>>>> "address".
>>>> >>>>> That basically makes the fact that what you have are
>>>> hierarchically named
>>>> >>>>> services opaque to the Web infrastructure. For example,
if you
>>>> were
>>>> >>>>> analyzing http logs to see the traffic you can't get
a simple
>>>> answer to "how
>>>> >>>>> many times have UK guys' services been used?". That's
*exactly*
>>>> the kind of
>>>> >>>>> wrong-headed thinking that got WS-* in trouble with
the REST guys
>>>> for
>>>> >>>>> improper use of REST (and I'm absolutely one of the
early culprits
>>>> who made
>>>> >>>>> the mistake).
>>>> >>>>>
>>>> >>>>> Another approach is to have a way to specify the context
path in
>>>> the
>>>> >>>>> service itself. If you remember, we used to have the
concept of
>>>> service name
>>>> >>>>> you could specify in service.xml itself (maybe its still
there; I
>>>> have no
>>>> >>>>> idea) - the idea was it would override the .aar file
name if
>>>> thats' there.
>>>> >>>>> This is similar- you can have in foo.aar a setting saying
>>>> >>>>> contextPath="finance/foo" and that means that's where
the service
>>>> is
>>>> >>>>> deployed.
>>>> >>>>>
>>>> >>>>> The advantage of simply using the file system hierarchy
to compute
>>>> that
>>>> >>>>> is just simplicity. The context hierarchy is visible
to everyone
>>>> by simply
>>>> >>>>> looking at the directory structure. If you check in
the repository
>>>> into SVN
>>>> >>>>> (which I know a bunch of people do) it gives a simple
way to
>>>> manage
>>>> >>>>> authorization for deployment for different people.
>>>> >>>>>
>>>> >>>>> I actually think we should support a contextPath=xxx
option in
>>>> >>>>> services.xml as well. However, treating the file system
hierarchy
>>>> as a
>>>> >>>>> hierarchy is, you know, rather natural.
>>>> >>>>>
>>>> >>>>> I think Isuru has shown that there is no extra performance
loss or
>>>> any
>>>> >>>>> other loss by supporting hierachically deployed services.
You
>>>> DON'T need to
>>>> >>>>> use them unless you want to of course - and if there's
no
>>>> hierarchy there's
>>>> >>>>> no change at all (subject to having enough unit tests
to make sure
>>>> that old
>>>> >>>>> and new behavior for the old feature is not changed).
>>>> >>>>>
>>>> >>>>> Sanjiva.
>>>> >>>>>
>>>> >>>>> On Sat, Aug 29, 2009 at 7:05 PM, Deepal jayasinghe <
>>>> deepalk@gmail.com>
>>>> >>>>> wrote:
>>>> >>>>>>
>>>> >>>>>> >
>>>> >>>>>> >
>>>> >>>>>> > On Fri, Aug 28, 2009 at 8:30 PM, Andreas Veithen
>>>> >>>>>> > <andreas.veithen@gmail.com <mailto:andreas.veithen@gmail.com>>
>>>> >>>>>> > wrote:
>>>> >>>>>> >
>>>> >>>>>> >     Guys,
>>>> >>>>>> >
>>>> >>>>>> >     Are we actually discussing the right question?
Looking at
>>>> the
>>>> >>>>>> > patch
>>>> >>>>>> >     proposed by Isuru, I have the impression
that versioning is
>>>> >>>>>> > merely one
>>>> >>>>>> >     use case, but that (in contrast to modules)
the code
>>>> doesn't
>>>> >>>>>> > make any
>>>> >>>>>> >     assumption about the meaning of the hierarchy
in the
>>>> repository
>>>> >>>>>> > (it
>>>> >>>>>> >     could be version number, but it could also
something
>>>> completely
>>>> >>>>>> >     different). Fundamentally the change is
not about
>>>> versioning,
>>>> >>>>>> > but
>>>> >>>>>> >     about giving the user the possibility to
define the
>>>> structure of
>>>> >>>>>> > the
>>>> >>>>>> >     endpoint URL.
>>>> >>>>>> >
>>>> >>>>>> >
>>>> >>>>>> > yes. this should be the idea. it is to support
hierarchical
>>>> service
>>>> >>>>>> > folder structure to mange
>>>> >>>>>> > services. Versioning is only one possible use
case.
>>>> >>>>>> > I think this is a common requirement. For an
example if we take
>>>> a
>>>> >>>>>> > web
>>>> >>>>>> > site people don't put
>>>> >>>>>> > all their .jsp or .html files in the root directory.
They
>>>> manage
>>>> >>>>>> > them
>>>> >>>>>> > in a some meaningful
>>>> >>>>>> > folder structure and even page url maps to
it.
>>>> >>>>>> You are mistaken in the case of web site .jsp files
are like
>>>> .class
>>>> >>>>>> files. So even in Web Service we have package hierarchy.
>>>> >>>>>> > I can hardly think of any reason for opposing
to introduce such
>>>> >>>>>> > feature to axis2 service deployment provided
>>>> >>>>>> > that it *does not break existing functionality*.
>>>> >>>>>> If you look at the directory structure (as I told
you before)
>>>> >>>>>> information repeat it self. It is analogous to "Shop
is closed
>>>> because
>>>> >>>>>> it is not open".
>>>> >>>>>> Just because feature X is good in project Y, we
should not
>>>> introduce
>>>> >>>>>> that to Axis2.
>>>> >>>>>> If you or someone want to do such a feature of course
they can do
>>>> >>>>>> that,
>>>> >>>>>> just ad a new deployer  to handle the they want,
even in you case
>>>> we
>>>> >>>>>> can
>>>> >>>>>> do the same. Let's create a new deployer and manage
anyway you
>>>> like,
>>>> >>>>>> and
>>>> >>>>>> then if you think it is ok, then commit the new
deployer to
>>>> Axis2.
>>>> >>>>>>
>>>> >>>>>> However I am not ok with introducing new URL pattern,
I think
>>>> Isuru
>>>> >>>>>> already agreed to replace "/" with "-"
>>>> >>>>>> >
>>>> >>>>>> > Deepal,
>>>> >>>>>> > I feel you have given over weight to the versioning
support
>>>> which is
>>>> >>>>>> > a
>>>> >>>>>> > use case of this. In the way to have told
>>>> >>>>>> > people can have versioning without any support
of axis2, by
>>>> just
>>>> >>>>>> > naming service in the way they need.
>>>> >>>>>> Yes. At the end of the day whether it is "/" or
"-" would become
>>>> a
>>>> >>>>>> unique name. So it is the service name.
>>>> >>>>>> >
>>>> >>>>>> > Comming into the other point of probable break
of existing
>>>> >>>>>> > functionality Can you please come up with the
>>>> >>>>>> > set of use case scenarios for this? Then we
can ask Isuru to
>>>> provide
>>>> >>>>>> > integration test for all these scenarios. This
may test the
>>>> existing
>>>> >>>>>> > functionality as well :)
>>>> >>>>>> I am sorry I do not have time to comeup with scenarios
when
>>>> someone
>>>> >>>>>> add
>>>> >>>>>> new features, specially even without going through
the existing
>>>> JIRA.
>>>> >>>>>> >
>>>> >>>>>> > I think we should not be pessimistic and think
deployment
>>>> engine is
>>>> >>>>>> > done for ever and any change will break it.
>>>> >>>>>> Not at all, how many changes we made, in this case
my concern is
>>>> not
>>>> >>>>>> the
>>>> >>>>>> deployment engine it is the URL pattern.
>>>> >>>>>> >
>>>> >>>>>> > Isuru,
>>>> >>>>>> > Please provide a set of integration tests for
the scenarios
>>>> >>>>>> > mentioned.
>>>> >>>>>> :)
>>>> >>>>>>
>>>> >>>>>> Thanks,
>>>> >>>>>> Deepal
>>>> >>>>>
>>>> >>>>>
>>>> >>>>>
>>>> >>>>> --
>>>> >>>>> Sanjiva Weerawarana, Ph.D.
>>>> >>>>> Founder, Director & Chief Scientist; Lanka Software
Foundation;
>>>> >>>>> http://www.opensource.lk/
>>>> >>>>> Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
>>>> >>>>> Member; Apache Software Foundation; http://www.apache.org/
>>>> >>>>> Visiting Lecturer; University of Moratuwa;
>>>> http://www.cse.mrt.ac.lk/
>>>> >>>>>
>>>> >>>>> Blog: http://sanjiva.weerawarana.org/
>>>> >>>>
>>>> >>>>
>>>> >>>>
>>>> >>>> --
>>>> >>>> Sanjiva Weerawarana, Ph.D.
>>>> >>>> Founder, Director & Chief Scientist; Lanka Software
Foundation;
>>>> >>>> http://www.opensource.lk/
>>>> >>>> Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
>>>> >>>> Member; Apache Software Foundation; http://www.apache.org/
>>>> >>>> Visiting Lecturer; University of Moratuwa;
>>>> http://www.cse.mrt.ac.lk/
>>>> >>>>
>>>> >>>> Blog: http://sanjiva.weerawarana.org/
>>>> >>>
>>>> >>>
>>>> >>>
>>>> >>> --
>>>> >>> Keith Chapman
>>>> >>>
>>>> >>> blog: http://www.keith-chapman.org
>>>> >>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> Senior Software Engineer,
>>>> >> WSO2 Inc. http://wso2.org/
>>>> >> Blog : http://isurues.wordpress.com/
>>>> >
>>>> >
>>>>
>>>>
>>>>
>>>> --
>>>> Paul Fremantle
>>>> Co-Founder and CTO, WSO2
>>>> Apache Synapse PMC Chair
>>>> OASIS WS-RX TC Co-chair
>>>>
>>>> blog: http://pzf.fremantle.org
>>>> paul@wso2.com
>>>>
>>>> "Oxygenating the Web Service Platform", www.wso2.com
>>>>
>>>
>>>
>>
>>
>> --
>> Amila Suriarachchi
>> WSO2 Inc.
>> blog: http://amilachinthaka.blogspot.com/
>>
>
>


-- 
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/

Mime
View raw message