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

Jayant Vaish commented on AXIS2-5602:
-------------------------------------

Yes Shameera, agree that patch doesn't serve the purpose in case endpoint have 
operation name as well after the service name. So, then there should be some 
good way of identifying the service name from endpoint. Or we can do search for 
finding axisService from endpoint by reversing the existing while loop which 
finds the service in 
org.apache.axis2.dispatchers.RequestURIBasedOperationDispatcher, 
e.g.
1. a/b and a/b/c are the serviceNames of services deployed
2. a/b/c/d is the endpoint which should return a/b/c service then:
We can find axisService like following:
registry.getService("a/b/c/d") 
if it's null then  it will remove the last / part and search again:
registry.getService("a/b/c")

Up to my understanding, it solves the problem in both cases (Original issue of 
this jira and if endpoint have operation name).

But now thinking it again i feel still it have some limitation which can be 
explained as follow:

1. a/b and a/b/c are the serviceNames of services deployed
2. a/b is having one operation name c
3. endpoint a/b/c is expected to return service a/b which have the operation c
But when it goes to find service  registry.getService("a/b/c") it get the wrong 
service a/b/c


So, there must be some way of identifying the serviceName from endpoint.

Thanks,
Jayant




                
> RequestURIBasedServiceDispatcher#findService is returning wrong axis service
> ----------------------------------------------------------------------------
>
>                 Key: AXIS2-5602
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5602
>             Project: Axis2
>          Issue Type: Bug
>    Affects Versions: 1.6.2
>            Reporter: Jayant Vaish
>            Priority: Blocker
>         Attachments: AXIS_5602.patch
>
>
> I am having two services deployed on axis2-1.6.2 having following 
> axisServiceName:
> 1. Service1/Start/WFmagic_cksXMrobEd2Fe4Kb1Aqw9Q
> 2. Service1/Start
> Passing messageContext in 
> org.apache.axis2.dispatchers.RequestURIBasedServiceDispatcher.findService(MessageContext)
>  
> has following epr address:
>  
> EndpointReference toEPR = messageContext.getTo();
> toEPR.getAddress() is 
> http://localhost:8080/axis2/services/Service1/Start/WFmagic_cksXMrobEd2Fe4Kb1Aqw9Q
> So, expected axis service returned by 
> org.apache.axis2.dispatchers.RequestURIBasedServiceDispatcher.findService(MessageContext)
> should be : "Service1/Start/WFmagic_cksXMrobEd2Fe4Kb1Aqw9Q"
> But I am getting "Service1/Start" which is wrong !!!
> Further looking into the code found the following snippet which seems to be 
> the culprit:
> org.apache.axis2.dispatchers.RequestURIBasedServiceDispatcher.java
>               while (axisService == null && count < parts.length &&
>                         count < Constants.MAX_HIERARCHICAL_DEPTH) {
>                     serviceName = count == 0 ? serviceName + parts[count] :
>                             serviceName + "/" + parts[count];
>                     axisService = registry.getService(serviceName);
>                     count++;
>                 }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to