Details
-
Type:
Bug Fix
-
Status: Closed
-
Priority:
Critical
-
Resolution: Fixed
-
Affects Version/s: None
-
Component/s: Development
-
Labels:None
-
Rice Module:KEW
-
KAI Review Status:Not Required
-
KTI Review Status:Not Required
Description
Here's an example from KewServiceBusSpringBeans.xml.
<bean parent="kewLocalServiceExporter"> <property name="remotedServiceRegistry" ref="enServiceInvoker"/> <property name="serviceDefinition"> <bean class="org.kuali.rice.ksb.messaging.JavaServiceDefinition"> <property name="service"> <ref bean="enWorkflowUtilityService" /> </property> <property name="localServiceName" value="enWorkflowUtilityService" /> <property name="serviceNameSpaceURI" value="" /> <property name="priority" value="3" /> <property name="retryAttempts" value="0" /> <property name="busSecurity" value="${secure.workflowutility.javaservice.endpoint}"/> </bean> </property> </bean>
This was added in 1.0.2.1 for KULRICE-3721. This is because the service name in spring is enWorkflowUtilityService (no namespace when it's looked up) but the service is being published to the bus with a QName like the following:
new QName(<application's service namespace>, "WorkflowUtilityService")
As I mentioned, I'm pretty sure this was done so that the exported/published service names would match the name of the spring beans:
enWorkflowUtilityService
enWorkflowDocumentActionsService
I think the solution here is to get rid of the "en" versions and rename the spring beans in KEWSpringBeans.xml to:
WorkflowUtilityService
WorkflowDocumentActionsService
Which is the name these services have always been published under in the past (and they are still published under that name now).
However, we still need to deal with the "namespaceUri" portion of the QName. Part of this problem here too is the fact that each application publishes the service with it's own service namespace as the namespaceUri.
So, for example an application with the service namespace of "TRAVEL" will publish the service as:
{TRAVEL}WorkflowUtilityService
Where as the standalone server publishes the service as:
{RICE}WorkflowUtilityService
This allows for the rice standalone server to figure out how to "call back" into the client based on it's service namespace.
So all of this complicates the situation, in general i think we need to review how we publish, name, and namespace services as part of Rice 1.1.