[KULRICE-4816] Implement interaction with the service registry so that it goes over remote connection instead of direct database access Created: 11/Nov/10  Updated: 23/Feb/12  Resolved: 07/Jun/11

Status: Closed
Project: Kuali Rice Development
Component/s: Development, Version Compatibility
Affects Version/s: None
Fix Version/s: 2.0.0-m5, 2.0

Type: Improvement Priority: Critical
Reporter: Eric Westfall Assignee: Eric Westfall
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Discovered
discovered KULRICE-5190 Remove KSBThinClientResourceLoader as... Closed
discovered KULRICE-13369 Make it easy to run the KSB Service R... Open
discovered KULRICE-6038 Update KSB documentation for changes ... Open
discovered KULRICE-5193 Move KSB implementation code which is... Open
discovered KULRICE-13852 Implement the capability for applicat... Open
discovered KULRICE-13860 Implement a more extensive suite of i... Open
discovered KULRICE-5191 Look into KSB integration test failur... Closed
Duplicate
is duplicated by KULRICE-4799 Modify the KSB so that the registry c... Closed
Fix
fixes KULRICE-4511 Refactor service registry to implemen... Closed
Rely
is relied upon by KULRICE-4528 Implement ability for rice server to ... Closed
Rice Module:
KSB
KAI Review Status: Not Required
KTI Review Status: Not Required

 Description   

I think this will be critical for version compatibility. A diagram showing how this might work can be found here as well as a service interface definition:

https://wiki.kuali.org/x/-ok_Eg

If we do this, then instead of configuring a database connection on the client, they can simply configure a URL which points to the URL of the service registry.



 Comments   
Comment by Jason Whaley (Inactive) [ 26/Jan/11 ]

Do we still want to do this for 1.1? If so, we'll need to make ServiceRegistry (and/or RemotedServiceRegistry) a JAXWS service and perform our BO/DTO strategy on ServiceInfo.

Thoughts?

Comment by Eric Westfall [ 27/Apr/11 ]

Notes from meeting today in New Orleans:

These are the items that we agreed are "in scope" for 2.0:

  1. SOAP-based interface to the service registry
  2. Replace serialized form of service definition with XML/JAXB-based form
  3. Remove "dead" indicator from the registry, move the "dead service" state to the client app so it's not in the registry.
  4. Add "version" information into the registry.
  5. API to get version for a service.
  6. Implement a model by which applications automatically have a version and their services are published under that version.
  7. Client application configures a registry "url" in order to configure it. Build in backend support for "loading" the service that points to the registry (might work similar to ThinClientResourceLoader?)

Items we agreed were out of scope for 2.0:

  1. Keep database mode as a backup.
  2. Add the concept of getting all services for an interface to the registry.
  3. The ability to configure a "single" service registry url and have it "detect" all available service registry service endpoints. Then providing capabilities like automatic failover, etc.
Comment by Eric Westfall [ 27/Apr/11 ]

Assigning to myself as per our discussion today.

Comment by Eric Westfall [ 03/May/11 ]

I'm going to start working on this today. My general plan here is as follows:

1) Define the new remotable interface to the service registry along with DTOs
2) Hook up the ability to define a url to the service registry, along with security.
3) Refactoring existing KSB internal code to use this new service. This is probably going to be the most difficult part because right now all of this stuff is intertwined in the remoted service registry.

Comment by Eric Westfall [ 03/May/11 ]

Have the interface for the RemoteServiceRegistry committed up along with all the dtos. Everything should be properly annotated, though there is still quite a bit of work to do on javadocs and adding proper validation for required attributes. However, I'd like to work on hooking some of this stuff up first before we go down that path in case the api needs to change some. Next step is to work on hooking up the ability to configure connecting up to the remote registry via a url, then integrating the current interface with the existing KSB "client".

Comment by Eric Westfall [ 03/May/11 ]

A couple of other just general design notes here, I created the following concepts:

1) ServiceEndpoint
2) ServiceHeader
3) ServiceDescriptor

The ServiceEndpoint is basically just a header + descriptor + id.

The ServiceHeader contains various identifying information about the service such as service name, endpoint url, etc.

The ServiceDescriptor contains the "serialized" configuration for the service which can include pretty much anything (at this point at least) which is needed in order to provide further configuration about the service (i.e. how many retries, exception handler, etc.). Basically any metadata about the service which is not included in the header. Note that it's intended that, when the system launches, it will load all remote service headers from the registry (which should be faster than getting the full endpoint definition) in order to construct it's "local" copy of the registry.

Ultimately, a better approach might even be having it load some standard set of services that it needs, and then going out the registry on demand for any additional services that are requested that it doesn't know about. That would certainly scale better but is out of scope I think for this version.

Comment by Eric Westfall [ 04/May/11 ]

I created the following branch to finish up work on this on because I'm embarking upon the impacting portion of this jira: https://test.kuali.org/svn/rice/sandbox/rice-2.0-KULRICE-4816-br

Comment by Eric Westfall [ 16/May/11 ]

Wanted to provide an update for this issue.

I have merged my first major push on this to trunk. This involved a significant refactoring of the way that the registry is handled and the way the KSB is put together and maintains service information. This appears to be working, though there are quite a few integration tests failing that I need to look at.

Note that this first commit contains a remotable service registry (properly annotated for JAXB) but it is not actually implemented as remote. I still need to implement the REST-based service that will allow for us to discover registry endpoints and connect to them remotely.

Here is my current remaining TODO list:

  1. Create RestServiceRegistryConnector implementation general ServiceRegistryConnector interface
    • this will be the piece that hits the rest service and reads from the configuration on the url to hit
  2. Make sure dev.mode and batch.mode still work properly and are implemented correctly in the appropriate places
  3. Implement XML serialization of serviceconfiguration
    • Currently this is still being handled as java serialization of the ServiceConfiguration
  4. Update the master database for the new changes - wasn't able to connect on Sunday night because the MDS is down and being rebuilt from backup
    • 2011-05-13.sql
  5. Deal with KSBThinClientResourceLoader, do we even need this anymore with the ability to connect to the registry via URL?
  6. The service bus might not cleaning up "I" services in the registry after a restart...
  7. go back through and fully javadoc at least the api
  8. go back and update our services so that they publish their version, also have a way to configure a "current" version in the config? Could it be derived somehow from pom.xml?
  9. Look into how registry synchronization is locking, seems like it might be too heavy handed
  10. Can org.kuali.rice.ksb.service.KSBContextServiceLocator be removed?
  11. On every new startup, it deletes existing and publishes new endpoints...is this desirable? Should it instead "update" existing entries in the registry if they are pretty much the same?
  12. Some of the impl tests didn't come over (the "groovy" ones that test the diff calculator)
  13. Moved Coded to mo/common
  14. Need to the delete the "old" spring bean folder
    1. Create a document given a rough rundown of the new design, a couple of random notes joted down early on:
    • registry will simply store the checksum, not responsible for generating it, that's client responsibility
    • service namespace on registry table is actually becoming application namespace
    • document the renamed changes packages (see below)
  15. Get KSB integration tests working again
    • ContextObjectMessagingTest throws some bam-related nullpointerexceptions
    • Need to write a test for ServiceBusImpl and ServiceRegistryImpl
      • deleted RemotedServiceRegistryTest
      • deleted RemoteResourceLoaderTest
    • Tests are getting locked up sometimes, appear to be outstanding threads holding connections open to krsb_bam_t?
  16. Write some more "pure" unit tests to test some of the ksb impl code
  17. If possible, move KSB-impl-specific code out of rice-impl to ksb-impl
  18. For configuration stuff:
    • should CommonOJBSpringBeans.xml setup be moved somewhere else?
  19. Update Modularity Changes document to


Files Renamed/Changed Packages:

(I'm sure I missed some other important ones, so will augment this list as needed)

  • KSBExporter renamed to org.kuali.rice.ksb.api.bus.support.ServiceBusExporter
  • PropertyConditionalKSBExporter renamed to org.kuali.rice.ksb.api.bus.support.PropertyConditionalServiceBusExporter
  • all of the service definition classes moved to org.kuali.rice.ksb.api.support package
  • org.kuali.rice.ksb.messaging.SOAPServiceDefinition -> org.kuali.rice.ksb.api.bus.support.SoapServiceDefinition
  • org.kuali.rice.ksb.messaging.RESTServiceDefinition -> org.kuali.rice.ksb.api.bus.support.RestServiceDefinition
  • org.kuali.rice.ksb.messaging.JavaServiceDefinition -> org.kuali.rice.ksb.api.bus.support.JavaServiceDefinition
  • org.kuali.rice.ksb.messaging.KSBExporter -> org.kuali.rice.ksb.api.bus.support.ServiceBusExporter
Comment by Eric Westfall [ 16/May/11 ]

Below is the output from the merge in to trunk in case it is relevant at some point in the future:

eric-westfalls-macbook-pro-2:rice ewestfal$ svn merge -r16971:HEAD https://test.kuali.org/svn/rice/sandbox/rice-2.0-KULRICE-4816-br .
--- Merging r16972 through r20388 into '.':
U    sampleapp/src/main/resources/log4j.properties
A    scripts/upgrades/1.0.3 to 1.1.0/db-updates/mysql-2011-05-13.sql
U    core/impl/src/main/java/org/kuali/rice/core/impl/lifecycle/ServiceDelegatingLifecycle.java
D    core/impl/src/main/java/org/kuali/rice/core/impl/proxy/BaseInvocationHandler.java
D    core/impl/src/main/java/org/kuali/rice/core/impl/proxy/BaseTargetedInvocationHandler.java
U    core/impl/src/main/java/org/kuali/rice/core/impl/config/property/BaseConfig.java
U    core/impl/src/main/java/org/kuali/rice/core/impl/config/property/AbstractBaseConfig.java
U    core/impl/src/main/java/org/kuali/rice/core/impl/config/module/CoreConfigurer.java
U    core/impl/src/main/java/org/kuali/rice/core/impl/resourceloader/ContextClassLoaderProxy.java
D    core/impl/src/main/java/org/kuali/rice/core/security/credentials
U    core/impl/src/main/groovy/org/kuali/rice/core/impl/parameter/ParameterBo.groovy
U    core/impl/src/main/resources/org/kuali/rice/core/config/CORESpringBeans.xml
U    core/api/src/test/groovy/org/kuali/rice/core/api/parameter/ParameterTest.groovy
U    core/api/src/main/java/org/kuali/rice/core/api/parameter/EvaluationOperator.java
D    core/api/src/main/java/org/kuali/rice/core/api/reflect/TargetedInvocationHandler.java
U    core/api/src/main/java/org/kuali/rice/core/api/config/property/Config.java
U    core/api/src/main/java/org/kuali/rice/core/api/CoreConstants.java
A    core/api/src/main/java/org/kuali/rice/core/api/security
A    core/api/src/main/java/org/kuali/rice/core/api/security/credentials
A    core/api/src/main/java/org/kuali/rice/core/api/security/credentials/CredentialsSourceFactory.java
A    core/api/src/main/java/org/kuali/rice/core/api/security/credentials/Credentials.java
A    core/api/src/main/java/org/kuali/rice/core/api/security/credentials/CredentialsSource.java
A    core/api/src/main/java/org/kuali/rice/core/api/mo/Coded.java
A    core/api/src/main/java/org/kuali/rice/core/util/jaxb/EnumStringAdapter.java
A    core/api/src/main/java/org/kuali/rice/core/util/reflect
A    core/api/src/main/java/org/kuali/rice/core/util/reflect/BaseInvocationHandler.java
A    core/api/src/main/java/org/kuali/rice/core/util/reflect/BaseTargetedInvocationHandler.java
A    core/api/src/main/java/org/kuali/rice/core/util/reflect/TargetedInvocationHandler.java
U    core/api/src/main/java/org/kuali/rice/core/util/ClassLoaderUtils.java
A    core/api/src/main/java/org/kuali/rice/core/util/io
A    core/api/src/main/java/org/kuali/rice/core/util/io/SerializationUtils.java
U    core/framework/src/main/groovy/org/kuali/rice/core/framework/parameter/ParameterEbo.groovy
U    core/web/src/main/java/org/kuali/rice/core/web/parameter/ParameterOperatorValuesFinder.java
U    pom.xml
   C impl/src/test/groovy/org
U    impl/src/main/java/org/kuali/rice/ksb/service/KSBServiceLocator.java
A    impl/src/main/java/org/kuali/rice/ksb/impl
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/RestServiceRegistryConnector.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/ServiceRegistryDaoOjb.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/diff
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/diff/CompleteServiceDiff.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/diff/LocalServicesDiff.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/diff/RemoteServicesDiff.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/diff/ServiceRegistryDiffCalculator.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/diff/ServiceRegistryDiffCalculatorImpl.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/ServiceRegistryImpl.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/registry/ServiceRegistryDao.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/bus
A    impl/src/main/java/org/kuali/rice/ksb/impl/bus/InstanceIdFactoryBean.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/bus/LazyEndpoint.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/bus/LocalService.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/bus/RemoteService.java
A    impl/src/main/java/org/kuali/rice/ksb/impl/bus/ServiceBusImpl.java
U    impl/src/main/java/org/kuali/rice/ksb/cache/RiceDistributedCacheListener.java
U    impl/src/main/java/org/kuali/rice/ksb/cache/CacheProperties.java
U    impl/src/main/java/org/kuali/rice/ksb/cache/RiceCacheAdministratorImpl.java
U    impl/src/main/java/org/kuali/rice/ksb/security/soap/CXFWSS4JInInterceptor.java
U    impl/src/main/java/org/kuali/rice/ksb/security/soap/CXFWSS4JOutInterceptor.java
U    impl/src/main/java/org/kuali/rice/ksb/security/soap/CredentialsOutHandler.java
U    impl/src/main/java/org/kuali/rice/ksb/security/credentials/UsernamePasswordCredentials.java
U    impl/src/main/java/org/kuali/rice/ksb/security/credentials/UsernamePasswordCredentialsSource.java
U    impl/src/main/java/org/kuali/rice/ksb/security/credentials/X509Credentials.java
U    impl/src/main/java/org/kuali/rice/ksb/security/credentials/X509CredentialsSource.java
U    impl/src/main/java/org/kuali/rice/ksb/security/credentials/SecurityUtils.java
U    impl/src/main/java/org/kuali/rice/ksb/security/credentials/CasProxyTicketCredentialsSource.java
U    impl/src/main/java/org/kuali/rice/ksb/security/httpinvoker/AuthenticationCommonsHttpInvokerRequestExecutor.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/MessageServiceInvoker.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/servlet/CXFServletControllerAdapter.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/servlet/KSBDispatcherServlet.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/servlet/KSBHttpInvokerHandler.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/RemoteResourceServiceLocatorImpl.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/RemotedServiceRegistryImpl.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/objectremoting
D    impl/src/main/java/org/kuali/rice/ksb/messaging/SOAPServiceDefinition.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/ServiceHolder.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/PropertyConditionalKSBExporter.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/RoutingTableDiffCalculator.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/RepeatTopicInvokerQueueImpl.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/RESTServiceDefinition.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/KSBExporter.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/RemoteResourceServiceLocator.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/RemotedServiceRegistry.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/ServiceDefinition.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/ServerSideRemotedServiceHolder.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/JavaServiceDefinition.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/ServiceInfo.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/RemotedServiceHolder.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/callforwarding
D    impl/src/main/java/org/kuali/rice/ksb/messaging/RepeatTopicInvokerQueue.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/MessageHelperImpl.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/bam/BAMClientProxy.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/bam/service/BAMService.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/bam/service/impl/BAMServiceImpl.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/bam/BAMServerProxy.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/exceptionhandling/DefaultExceptionServiceImpl.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/exceptionhandling/DefaultMessageExceptionHandler.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/dao/ServiceInfoDAO.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/dao/impl/ServiceInfoDAOJpaImpl.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/dao/impl/ServiceInfoDAOOjbImpl.java
A    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceexporters/ServiceExportManagerImpl.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceexporters/ServiceExporterFactory.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceexporters/HttpInvokerServiceExporter.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceexporters/RESTServiceExporter.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceexporters/ServiceExporter.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceexporters/AbstractWebServiceExporter.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceexporters/SOAPServiceExporter.java
A    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceexporters/ServiceExportManager.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/web/ThreadPoolAction.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/web/MessageQueueAction.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/web/ServiceRegistryAction.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/web/QuartzQueueAction.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/web/KSBStrutsRequestProcessor.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/web/ServiceRegistryForm.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/BusClientFailureProxy.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/quartz/MessageServiceExecutorJob.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/quartz/MessageServiceExecutorJobListener.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/RiceCacheExporterFactoryBean.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceconnectors/AbstractServiceConnector.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceconnectors/BusLocalConnector.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceconnectors/ServiceConnectorFactory.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceconnectors/HttpInvokerConnector.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceconnectors/RESTConnector.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceconnectors/ServiceConnector.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceconnectors/ResourceFacadeImpl.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceconnectors/SOAPConnector.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/service/impl/BusAdminServiceImpl.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/service/impl/MessageQueueServiceImpl.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/service/ServiceRegistry.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/service/impl/ServiceRegistryImpl.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/service/BusAdminService.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/service/MessageQueueService.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/RunModeServiceExporter.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/config/KSBConfigurer.java
D    impl/src/main/java/org/kuali/rice/ksb/messaging/config/ServiceBasedServiceDefinitionRegisterer.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/MessageFetcher.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/AsynchronousCall.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/KSBHttpInvokerServiceExporter.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/PersistedMessageBO.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceproxies/DelayedAsynchronousServiceCallProxy.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceproxies/SynchronousServiceCallProxy.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/serviceproxies/AsynchronousServiceCallProxy.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/KSBHttpInvokerProxyFactoryBean.java
U    impl/src/main/java/org/kuali/rice/ksb/messaging/resourceloader/KSBResourceLoaderFactory.java
A    impl/src/main/java/org/kuali/rice/ksb/messaging/resourceloader/ServiceBusResourceLoader.java
U    impl/src/main/java/org/kuali/rice/ksb/util/KSBConstants.java
U    impl/src/main/java/org/kuali/rice/kew/messaging/exceptionhandling/ExceptionRoutingServiceImpl.java
U    impl/src/main/java/org/kuali/rice/kew/quicklinks/dao/impl/QuickLinksDAOOjbImpl.java
U    impl/src/main/java/org/kuali/rice/kns/service/impl/RiceApplicationConfigurationMediationServiceImpl.java
U    impl/src/main/java/org/kuali/rice/kns/service/impl/BusinessObjectSerializerServiceImpl.java
A    impl/src/main/groovy/org/kuali/rice/ksb
A    impl/src/main/groovy/org/kuali/rice/ksb/impl
A    impl/src/main/groovy/org/kuali/rice/ksb/impl/registry
A    impl/src/main/groovy/org/kuali/rice/ksb/impl/registry/ServiceInfoBo.groovy
A    impl/src/main/groovy/org/kuali/rice/ksb/impl/registry/ServiceDescriptorBo.groovy
U    impl/src/main/resources/org/kuali/rice/kcb/config/KCBSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/OJB-repository-ksb-bam.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/KsbServiceBusClientSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/KsbOjbBamSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/OJB-repository-ksb-message.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/KsbModuleConfigurationSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/KsbWebSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/KsbOjbMessageClientSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/OJB-repository-ksb-registry.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/KsbBamSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/KsbRegistryServerSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/KsbMessageClientSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/KsbOjbRegistrySpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/old
A    impl/src/main/resources/org/kuali/rice/ksb/config/old/OJB-repository-ksb.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/old/KSBJPASpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/old/KSBOJBSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/old/KSBModuleConfigurationSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/old/KSBSpringBeans.xml
A    impl/src/main/resources/org/kuali/rice/ksb/config/old/KSBThinClientSpringBeans.xml
D    impl/src/main/resources/org/kuali/rice/ksb/config/KSBThinClientSpringBeans.xml
D    impl/src/main/resources/org/kuali/rice/ksb/config/OJB-repository-ksb.xml
D    impl/src/main/resources/org/kuali/rice/ksb/config/KSBJPASpringBeans.xml
D    impl/src/main/resources/org/kuali/rice/ksb/config/KSBOJBSpringBeans.xml
D    impl/src/main/resources/org/kuali/rice/ksb/config/KSBModuleConfigurationSpringBeans.xml
D    impl/src/main/resources/org/kuali/rice/ksb/config/KSBSpringBeans.xml
U    impl/src/main/resources/org/kuali/rice/kim/config/KIMServiceBusSpringBeans.xml
U    impl/src/main/resources/org/kuali/rice/kim/config/KIMServiceBusSOAPDefaultSpringBeans.xml
U    impl/src/main/resources/org/kuali/rice/kew/config/KEWSpringBeans.xml
U    impl/src/main/resources/org/kuali/rice/kew/config/KEWServiceBusSOAPDefaultSpringBeans.xml
U    impl/src/main/resources/org/kuali/rice/kew/config/KEWServiceBusSpringBeans.xml
U    impl/src/main/resources/org/kuali/rice/kns/config/KNSServiceBusSpringBeans.xml
U    impl/src/main/resources/org/kuali/rice/ken/config/KENSpringBeans.xml
U    web/src/main/webapp/ksb/WEB-INF/jsp/registry/ServiceRegistry.jsp
A    ksb/impl/src/main/java/org
A    ksb/impl/src/main/java/org/kuali
A    ksb/impl/src/main/java/org/kuali/rice
A    ksb/impl/src/main/java/org/kuali/rice/ksb
A    ksb/impl/src/main/java/org/kuali/rice/ksb/impl
A    ksb/impl/src/main/java/org/kuali/rice/ksb/impl/export
U    ksb/impl/pom.xml
U    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/ServiceDescriptor.java
U    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/ServiceEndpointContract.java
U    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/ServiceEndpoint.java
U    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/RegistryConstants.java
U    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/ServiceEndpointStatus.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/ServiceRegistry.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/ServiceInfoContract.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/ServiceInfo.java
U    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/ServiceDescriptorContract.java
D    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/RemoteServiceRegistry.java
D    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/ServiceHeader.java
D    ksb/api/src/main/java/org/kuali/rice/ksb/api/registry/KsbConstants.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/Endpoint.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/services
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/services/KsbApiServiceLocator.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/ServiceConfiguration.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/ServiceDefinition.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/ServiceBus.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/BasicEndpoint.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/ServiceBusExporter.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/RestServiceConfiguration.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/RestServiceDefinition.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/JavaServiceConfiguration.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/JavaServiceDefinition.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/SoapServiceConfiguration.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/AbstractServiceConfiguration.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/PropertyConditionalServiceBusExporter.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/SoapServiceDefinition.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/bus/support/AbstractServiceDefinition.java
A    ksb/api/src/main/java/org/kuali/rice/ksb/api/KsbConstants.java
U    ksb/api/pom.xml
U    test/ksb/src/test/java/org/kuali/rice/ksb/test/KSBTestCase.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/StartBusTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/security/admin/JavaSecurityManagementServiceTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/security/credentials/UsernamePasswordCredentialsSourceTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/security/credentials/CredentialsSourceFactoryTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/security/credentials/CasProxyTicketCredentialsSourceTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/SOAPMessagingTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/KSBTestUtils.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/RemoteFailureTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/RestServiceDefinitionTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/HttpInvokerConnectorConfigurationTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/TransactionMessagingTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/exceptionhandling/DefaultMessageExceptionHandlerTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/exceptionhandling/ExceptionMessagingTest.java
D    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/StoreAndForwardTest.java
D    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/RemotedServiceRegistryTest.java
D    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/RemoteResourceLoaderTest.java
D    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/objectremoting
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/SoapServiceDefinitionTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/ExceptionRetryCountTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/ServiceCallClusterTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/RESTServiceTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/ServiceUpdateAndRemovalTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/Value1AndValue2PersistedOnMessageCall.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/DistributedTopicTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/SOAPServiceTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/DevModeTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/MessageFetcherTest.java
U    test/ksb/src/test/java/org/kuali/rice/ksb/messaging/TestCallback.java
U    test/ksb/src/test/resources/KSBTestHarnessNoJtaSpring.xml
U    test/ksb/src/test/resources/KSBTestHarnessSpring.xml
U    test/ksb/src/test/resources/org/kuali/rice/ksb/testclient1/resources/TestClient1SpringBeans.xml
U    test/ksb/src/test/resources/org/kuali/rice/ksb/testclient2/resources/TestClient2SpringBeans.xml
U    test/kim/src/test/java/org/kuali/rice/kim/test/service/PermissionServiceRemoteTest.java
U    test/kim/src/test/java/org/kuali/rice/kim/test/service/GroupServiceRemoteTest.java
U    test/kim/src/test/java/org/kuali/rice/kim/test/service/RoleServiceRemoteTest.java
U    test/kew/src/test/java/org/kuali/rice/kew/engine/StandardWorkflowEngineTest.java
U    test/kew/src/test/resources/org/kuali/rice/kew/config/OverrideTestSpringBeans.xml
U    test/kns/src/test/resources/KnsTestSpringBeans.xml
U    krad/krad-web-framework/src/main/java/org/kuali/rice/kns/util/documentserializer/AlwaysTruePropertySerializibilityEvaluator.java
U    krad/krad-web-framework/src/main/java/org/kuali/rice/kns/util/documentserializer/MaintenanceDocumentPropertySerializibilityEvaluator.java
U    krad/krad-web-framework/src/main/java/org/kuali/rice/kns/util/documentserializer/BusinessObjectPropertySerializibilityEvaluator.java
U    krad/krad-web-framework/src/main/java/org/kuali/rice/kns/util/documentserializer/PropertySerializabilityEvaluatorBase.java
U    krad/krad-web-framework/src/main/java/org/kuali/rice/kns/util/documentserializer/AlwaysFalsePropertySerializabilityEvaluator.java
U    krad/krad-web-framework/src/main/java/org/kuali/rice/kns/util/documentserializer/PropertySerializabilityEvaluator.java
U    krad/krad-web-framework/src/main/java/org/kuali/rice/kns/document/DocumentBase.java
U    internal-test-tools/src/main/resources/rice-testharness-default-log4j.properties
Summary of conflicts:
  Tree conflicts: 1
Comment by Eric Westfall [ 16/May/11 ]

I'm going to track the remaining todos on this jira in this comment.

TODO list:

  1. Create RestServiceRegistryConnector implementation general ServiceRegistryConnector interface
    • this will be the piece that hits the rest service and reads from the configuration on the url to hit
  2. Make sure dev.mode and batch.mode still work properly and are implemented correctly in the appropriate places
  3. Implement XML serialization of serviceconfiguration
    • Currently this is still being handled as java serialization of the ServiceConfiguration
  4. Update the master database for the new changes - wasn't able to connect on Sunday night because the MDS is down and being rebuilt from backup
    • 2011-05-13.sql
  5. Deal with KSBThinClientResourceLoader, do we even need this anymore with the ability to connect to the registry via URL?
  6. The service bus might not cleaning up "I" services in the registry after a restart...
  7. go back through and fully javadoc at least the api
  8. go back and update our services so that they publish their version, also have a way to configure a "current" version in the config? Could it be derived somehow from pom.xml?
  9. Look into how registry synchronization is locking, seems like it might be too heavy handed
  10. Can org.kuali.rice.ksb.service.KSBContextServiceLocator be removed? Removed
  11. On every new startup, it deletes existing and publishes new endpoints...is this desirable? Should it instead "update" existing entries in the registry if they are pretty much the same?
  12. Some of the impl tests didn't come over (the "groovy" ones that test the diff calculator)
  13. Moved Coded to mo/common
  14. Need to the delete the "old" spring bean folder
  15. Create a document given a rough rundown of the new design, a couple of random notes joted down early on:
    • registry will simply store the checksum, not responsible for generating it, that's client responsibility
    • service namespace on registry table is actually becoming application namespace
    • document the renamed changes packages (see below)
  16. Get KSB integration tests working again
    • ContextObjectMessagingTest throws some bam-related nullpointerexceptions
    • Need to write a test for ServiceBusImpl and ServiceRegistryImpl
      • deleted RemotedServiceRegistryTest
      • deleted RemoteResourceLoaderTest
    • Tests are getting locked up sometimes, appear to be outstanding threads holding connections open to krsb_bam_t?
  17. Write some more "pure" unit tests to test some of the ksb impl code
  18. If possible, move KSB-impl-specific code out of rice-impl to ksb-impl
  19. For configuration stuff:
    • should CommonOJBSpringBeans.xml setup be moved somewhere else?
  20. Update Modularity Changes document to reflect files that have changed names or moved
  21. Modify other instances where we are using Enums with JAXB so that they use the Enum adapter
Comment by Rice-CI User (Inactive) [ 17/May/11 ]

Integrated in rice-trunk-nightly #52 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/52/)
KULRICE-4816 - fixed up how enums are mapped according to our standards
KULRICE-4816 - moved Coded interface to mo.common (for some reason the first commit didn't get everything)
KULRICE-4816 - moved Coded interface to mo.common
KULRICE-4816 - committing ksb impl unit tests that got missed in the merge
KULRICE-4816 - removed "old" spring config directory and KSBContextServiceLocator
KULRICE-4816 - removed "old" spring config directory and KSBContextServiceLocator
KULRICE-4816 - cleaned up some warnings on ksb classes
KULRICE-4816 - added a TODO comment to ServiceConnectorFactory
KULRICE-4816 - committing merge of my ksb refactor branch to trunk

Comment by Rice-CI User (Inactive) [ 18/May/11 ]

Integrated in rice-trunk-nightly #53 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/53/)
KULRICE-4816 - fixed an issue where the wrong id was being used when lazy loading the service descriptor

Comment by Rice-CI User (Inactive) [ 19/May/11 ]

Integrated in rice-trunk-nightly #58 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/58/)

Comment by Rice-CI User (Inactive) [ 20/May/11 ]

Integrated in rice-trunk-nightly #59 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/59/)
KULRICE-4816 - added class level comments to ServiceBus.java
KULRICE-4816 - modified ServiceBusImpl so that export manager operations handle prior to putting into or removing from hashmap (just in case there's an error during the process or something)

Comment by Rice-CI User (Inactive) [ 21/May/11 ]

Integrated in rice-trunk-nightly #60 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/60/)
KULRICE-4816 - Added javadoc to ServiceBus interface.

Comment by Rice-CI User (Inactive) [ 22/May/11 ]

Integrated in rice-trunk-nightly #61 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/61/)
KULRICE-4816 - committed fix for ksb oracle sql script

Comment by Eric Westfall [ 25/May/11 ]

As per previous item mentioned on this jira, I have started a document to document the work for this here:

https://wiki.kuali.org/x/T3dyEg

Comment by Eric Westfall [ 25/May/11 ]

Here is some info on what I'm planning for two of the major pieces that are remaining here:

Plan for registry connector:

  • Create a configuration parameter rice.ksb.registry.serviceUrl
    • this can contain a single url value for a service for accessing the registry
    • could add support for multiple in the future (with built-in client side load balancing), but for now, people should implement load balancing behind the url if they want some sort of failover capabilities
    • the url will automatically default based on the value of rice.url and using /remoting....
  • Create a ServiceRegistry implementation which reads this url and creates a SOAPConnector to it, delegating methods appropriately
    • if the url configuration parameter does not exist on startup, then fail startup of client-side ksb
    • note, in the future we may want to allow for apps to easily start up without configuring connections to the registry, but would be scope creep for this particular exercise
  • Add the exporting of the ServiceRegistry service to the KSB on ksb registry startup
    • need to determine if this can easily be done with the KSBExporter or if it has to be more carefully bootstrapped

Plan for serialization of ServiceConfiguration to XML:

  • currently, serialization is handled in LocalService.constructDescriptor and deserialization is handled in RemoteService.constructServiceConfiguration
  • simplest approach for now will be to jaxb annotate the ServiceConfiguration objects and replace object serialization with xml serialization using jaxb
  • since KSB doesn't have a great pluggable SPI for implementing custom exporters, connectors, and configuration it doesn't make sense to extract (or make "pluggable") the process by which configurations are serialized
    • could do that in a future iteration however
  • need to be sure to apply our existing best practices for jaxb and compatibility to this (i.e. using @XsdAnyElement to allow for future extension)
Comment by Rice-CI User (Inactive) [ 26/May/11 ]

Integrated in rice-trunk-nightly #68 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/68/)
KULRICE-4816 - Added javadoc to SerializationUtils class.

Comment by Eric Westfall [ 27/May/11 ]

With last commit, ServiceConfiguration is now being serialized to XML instead of a java serialized form.

Comment by Rice-CI User (Inactive) [ 28/May/11 ]

Integrated in rice-trunk-nightly #70 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/70/)
KULRICE-4816 - modified KSBConfigurer so that it recognizes proper run modes
KULRICE-4816 - committing work for service registry connector
KULRICE-4816 - modified KSB so that the service registry endpoint is getting published now
KULRICE-4816 - final work on service configuration being sored as XML in the registry
KULRICE-4816 - commiting work to add jaxb annotations to SoapServiceConfiguration
KULRICE-4816 - committing first chunk of work to convert ServiceConfigurations to an XML format for storage in the registry

Comment by Eric Westfall [ 30/May/11 ]

Just committed work for the LazyRemoteServiceRegistryConnector which uses a combination of unsecured REST and secured SOAP services to establish remote connections from KSB clients. There is still an issue where it kind of goes haywire when the registry endpoint goes down, i'm going to add that to the todo list to address.

Comment by Eric Westfall [ 30/May/11 ]

Updated TODO list for this jira:

I'm going to track the remaining todos on this jira in this comment.

TODO list:

  1. Make sure dev.mode and batch.mode still work properly and are implemented correctly in the appropriate places
  2. Deal with KSBThinClientResourceLoader, do we even need this anymore with the ability to connect to the registry via URL?
  3. go back through and fully javadoc at least the api
  4. go back and update our services so that they publish their version, also have a way to configure a "current" version in the config? Could it be derived somehow from pom.xml?
  5. Look into how registry synchronization is locking, seems like it might be too heavy handed I think it's ok for now
  6. On every new startup, it deletes existing and publishes new endpoints...is this desirable? Should it instead "update" existing entries in the registry if they are pretty much the same?
    • Additionally, if entries in the registry are marked as "I" for inactive/offline, then when the application starts back up it is creating a whole new set of active/online endpoints rather then updating the status on the offline ones. This basically means the registry table grows and grows everytime you shutdown/startup.
  7. Create a document given a rough rundown of the new design, a couple of random notes joted down early on:
    • registry will simply store the checksum, not responsible for generating it, that's client responsibility
    • service namespace on registry table is actually becoming application namespace
    • document the renamed changes packages (see below)
  8. Get KSB integration tests working again
    • ContextObjectMessagingTest throws some bam-related nullpointerexceptions
    • Need to write a test for ServiceBusImpl and ServiceRegistryImpl
      • deleted RemotedServiceRegistryTest
      • deleted RemoteResourceLoaderTest
    • Tests are getting locked up sometimes, appear to be outstanding threads holding connections open to krsb_bam_t?
  9. Write some more "pure" unit tests to test some of the ksb impl code
  10. If possible, move KSB-impl-specific code out of rice-impl to ksb-impl
    • Did some analysis here, it's going to take some work to do this which will involve dealing with the fact that a lot of code from other modules depends on the KSBScheduled and thread pool which are not currently part of the api
  11. For configuration stuff:
    • should CommonOJBSpringBeans.xml setup be moved somewhere else?
  12. Update Modularity Changes document to reflect files that have changed names or moved
  13. In the KTI discussion, Travis suggested providing a better "interface" to the ServiceDescriptor instead of just a blob of XML. Should look into if we can make this a little bit better by having this be a map of attributes.
  14. Add an architecture diagram to documentation.
Comment by Rice-CI User (Inactive) [ 31/May/11 ]

Integrated in rice-trunk-nightly #73 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/73/)
KULRICE-4816 - removed old ServiceRegistryConnector and implemented a LazyRemoteServiceRegistryConnector class which handles lazy loading of the remote service registry upon application startup.
KULRICE-4816 - modified ServiceInfo so that it uses an XmlAdapter for marshalling of QName since the default marshalling is problematic
KULRICE-4816 - modified ServiceRegistryDiffCalculatorImplTest so that it handles switching out config in a more robust manner
KULRICE-4816 - modified MessageFetcher so that it doesn't execute if message persistence is turned off
KULRICE-4816 - fixed a slight bug in BusClientFailureProxy whereby it wasn't properly re-pointing to a new service implementation upon failed invocation
KULRICE-4816 - modified ServiceBusImpl so that it doesn't invoke ServiceRegistry.removeAndPublish with empty lists because it's unecessary to do so
KULRICE-4816 - improved error messages in ModuleConfigurer

Comment by Rice-CI User (Inactive) [ 01/Jun/11 ]

Integrated in rice-trunk-nightly #74 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/74/)
KULRICE-4816 - javadoc'd ServiceInfo
KULRICE-4816 - javadoc'd ServiceInfoContract

Comment by Eric Westfall [ 01/Jun/11 ]

Documentation for this is pretty much done. Could probably use an architecture diagram so I still want to do that.

Comment by Rice-CI User (Inactive) [ 02/Jun/11 ]

Integrated in rice-trunk-nightly #75 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/75/)
KULRICE-4816 - implemented proper support for checking rice.ksb.batch.mode to the service bus
KULRICE-4816 - modified how service registry bootstrap process works so it is simpler
KULRICE-4816 - javadocs for ServiceEndpoint, ServiceEndpointContract
KULRICE-4816 - javadocs for ServiceDescriptor, ServiceDesriptorContract, and ServiceInfo
KULRICE-4816 - Improved ServiceInfoContract javadocs

Comment by Eric Westfall [ 02/Jun/11 ]

Thought about the following suggestion from Travis:

"In the KTI discussion, Travis suggested providing a better "interface" to the ServiceDescriptor instead of just a blob of XML. Should look into if we can make this a little bit better by having this be a map of attributes."

I think the issue here is that the remote registry has no knowledge of the information being stored in the service descriptor table, nor should it need to. For example, a new type of service endpoint might get created and published by a client application which uses a format for the descriptor XML that the registry is not aware of. Anybody wanting to invoke that service will, of course, need to be able to understand how to connect to it and read that information but the registry should be "dumb" in this sense. I think a solution here would be to modify the way the descriptor is implemented so that it is simply a set of key-value pairs (or some other standardized format, even if it's XML) but this would be additional scope that I think we don't have the time to implement for 2.0

Comment by Eric Westfall [ 02/Jun/11 ]

Plan for applying versions to Rice services in the registry:

For the Rice 2.0 release, all services should start with a version of 2.0. However, for every version of rice, those version numbers should increase accordingly. That way you can tell what version of the software the client is running. So, for example, rice version 2.1 should publish all services as "2.1" version.

We will ultimately want to write some utility classes that help with detecting versions and comparing version numbers. They should be aware of things like milestone versions and snapshots. This will allow us to (hopefully) automatically modify the version number based on the maven version we are working with. I'd like to try this through a configuration parameter in common-config-defaults.xml that gets filtered by the maven build.

We will create this configuration parameter and call it: rice.version

Then in our spring configuration files we will create a common ServiceDefinition parent bean which sets this version number on all our published services appropriately.

Comment by Eric Westfall [ 02/Jun/11 ]

Just committed the work to set up service versions on our soapservicedefinitions. For Rice 2.0 the JavaServiceDefinitions should be going away, so I didn't include version numbers on those.

Comment by Eric Westfall [ 03/Jun/11 ]

Currently working on the following item:

  • On every new startup, it deletes existing and publishes new endpoints...is this desirable? Should it instead "update" existing entries in the registry if they are pretty much the same?
    • Additionally, if entries in the registry are marked as "I" for inactive/offline, then when the application starts back up it is creating a whole new set of active/online endpoints rather then updating the status on the offline ones. This basically means the registry table grows and grows everytime you shutdown/startup.

From my analysis, it seems that we have a series of problems here that need to be addressed. First of all, want to document a major assumption that the KSB makes regarding uniqueness of services:

There is a requirement within the KSB implementation that each instance will only publish one service for a particular name. It's assumed there's no real value to having an instance publish more than one of the same service. This enforced on the client side by the ServiceBus implementation in the fact that it stores a map of service name to LocalService instance.

However, there are some issues here that need to be addressed:

  1. On the registry side there is no protection against more than one service with a particular name getting published for a specific instance id. The registry needs to be modified on the "publish" operation such that it queries the database first to determine if an entry exists in the registry for that instance id + service name combination. And then implement the following behavior:
    1. If there is an existing service in the registry and the incoming service info does not have a service id on it, then throw an error about attempting to publish a service that already exists
    2. If there is an existing service in the registry, and the incoming service info does have a service id on it, compare the service id and the service descriptor ids:
      1. If they are different, give the same "duplicate service" error as above
      2. If they are the same, execute an update, if the version numbers don't match an OptimisticLockException will get thrown by OJB
  2. Currently, the service bus is not comparing the services from the registry with the local services before publishing, it should be doing the following:
    1. For the given local service, look for a service in the registry with that service name and instance id.
    2. If one exists, that means we want to update it in the registry rather then insert a new entry, to do this copy the service id, service descriptor id, and version number over into the client-side copy of the ServiceEndpoint and then publish that service instead
    3. If one does not exist, that means we need to insert the service when we publish, pass to the registry as-is
Comment by Rice-CI User (Inactive) [ 04/Jun/11 ]

Integrated in rice-trunk-nightly #77 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/77/)
KULRICE-4816 - committed some more work related to proper handling of service diffs by the registry

Comment by Rice-CI User (Inactive) [ 06/Jun/11 ]

Integrated in rice-trunk-nightly #79 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/79/)
KULRICE-4816 - finished standardizing on "application id"
KULRICE-4816 - modified the AttributeSetAdapter so that it produces similar xml to MapStringString adapter
KULRICE-4816 - modified the core jaxb adapters so that they use the core namespace, made some modifications to the XML that MapStringStringAdapter generates
KULRICE-4816 - made some improvements to the ServiceRegistry interface so that the SOAP message comes out better
KULRICE-4816 - fixed an issue with KSBCOnfigurer that was preventing integration test startup
KULRICE-4816 - first big commit of work to standardize "service namespace" and "application namespace" on "application id"

Comment by Eric Westfall [ 06/Jun/11 ]

Alright, integration tests appear to be working now for the most part. Some appear to fail in eclipse because of db locking issues. Need to see how they fair in CI.

Comment by Eric Westfall [ 06/Jun/11 ]

Ok, getting close to where I can close this one out. Still need to do the following:

  1. Ensure that the KSB api is fully javadoc'd. In particular, need to make sure that the ServiceRegistry interface is well documented as it forms a part of the contract.
  2. Update wiki page to reflect change from application namespace to application id concept
  3. Update modularity document with information on package name changes, renamed files, etc.
    • Considering possibly putting together a wiki page instead to track impacting changes in rice?

Once I get the above items completed I'm resolving this jira. I'm deferring these items so jiras need to be created for them:

  1. Deal with KSBThinClientResourceLoader, do we even need this anymore with the ability to connect to the registry via URL?
  2. Look into remaining failures of KSB integration tests. Intermittent Oracle locking issues when running KSB integration tests.
    • Tests are getting locked up sometimes, appear to be outstanding threads holding connections open to krsb_bam_t?
  3. Implement some more integration and unit tests for KSB, including:
    • ServiceBusImpl
    • ServiceRegistryImpl
    • Write some more "pure" unit tests to test some of the ksb impl code, in particular could use one which tests the ServiceRegistry contract
  4. Move KSB code which is currently in rice-impl into ksb-impl module
    • It's going to take some work to do this which will involve dealing with the fact that a lot of code from other modules depends on the KSBScheduled and thread pool which are not currently part of the api
  5. Implement the ability for a client application to start up even if the service registry services are not online.
  6. Implement the ability to run just the service registry as a standalone application to help with high availability concerns.
Comment by Rice-CI User (Inactive) [ 07/Jun/11 ]

Integrated in rice-trunk-nightly #80 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/80/)
KULRICE-4816 - Added some improved content logging to SpringResourceLoader to help with debugging
KULRICE-4816 - organized imports on CoreConfigurer
KULRICE-4816 - modified GlobalResourceLoader so that it executes a stop on resource loader based on default classloader
KULRICE-4816 - fixed RestServiceDefinitionTest
KULRICE-4816 - fixing up some of the ksb integration tests
KULRICE-4816 - modified the various rice JAXB-d exceptions so they use the proper namespace

Comment by Eric Westfall [ 07/Jun/11 ]

Alright, that was a lot of typing but the KSB api is n javadoc'd enough in my opinion.

THat just leaves updating wiki and impacting changes document and creating jiras for deferred work and then i will resolve this jira.

Comment by Eric Westfall [ 07/Jun/11 ]

Ok, appropriate documentation has been updated and additional jiras have been created and linked to this one. Finally going to resolve this issue.

Comment by Rice-CI User (Inactive) [ 08/Jun/11 ]

Integrated in rice-trunk-nightly #81 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/81/)
KULRICE-4816 - javadoc'd RemoveAndPublishResult
KULRICE-4816 - fixed a typo in MessageHelper javadoc
KULRICE-4816 - updated RestServiceDefinition javadocs
KULRICE-4816 - javadoc'd BasicEndpoint
KULRICE-4816 - moved KsbApiServiceLocator into a different package.
KULRICE-4816 - javadoc'd ServiceDefinition
KULRICE-4816 - javadoc'd ServiceConfiguration
KULRICE-4816 - javadoc'd ServiceConfiguration
KULRICE-4816 - added missing return annotations to ServiceRegistry interface
KULRICE-4816 - finished javadocs for the ServiceRegistry service interface
KULRICE-4816 - working on javadocs on the ServiceRegistry service interface
KULRICE-4816 - working on javadocs on the ServiceRegistry service interface
KULRICE-4816 - working on javadocs on the ServiceRegistry service interface

Comment by Rice-CI User (Inactive) [ 09/Jun/11 ]

Integrated in rice-trunk-nightly #82 (See http://ci.rice.kuali.org/job/rice-trunk-nightly/82/)
KULRICE-4816 - minor correction to ServiceRegistry javadoc

Comment by Jessica Coltrin (Inactive) [ 23/Feb/12 ]

Closing since these items are now in the release notes.

Generated at Mon Apr 12 07:17:41 CDT 2021 using JIRA 7.0.11#70121-sha1:19d24976997c1d95f06f3e327e087be0b71f28d4.