Uploaded image for project: 'Kuali Rice Development'
  1. Kuali Rice Development
  2. KULRICE-13369

Make it easy to run the KSB Service Registry as a separate standalone application

    Details

    • Type: New Feature
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: Backlog
    • Component/s: Quality Assurance
    • Security Level: Public (Public: Anyone can view)
    • Labels:
    • Rice Team:
      QA

      Description

      See KULRICE-5194 for some reasons why this would be desirable. Right now you kind of have to run this all as part of the Rice standalone server.

        Attachments

          Issue Links

            Activity

            Hide
            eghm-kuali-m Erik Meade added a comment -

            Using https://wiki.kuali.org/display/KULRICE/Kuali+Rice+Remote+Load+Test+Client I've been getting: ServiceRegistryService# http://rice.kuali.org/ksb/v2_0 getAllOnlineServices has thrown exception org.apache.cxf.binding.soap.SoapFault: Empty username for specified action.

            2012-03-19 10:44:37,693 [Scanner-2] INFO org.kuali.rice.ksb.messaging.config.KSBConfigurer - Synchronizing remote services with service bus after KSB startup...
            2012-03-19 10:44:37,751 [Scanner-2] INFO org.apache.cxf.service.factory.ReflectionServiceFactoryBean - Creating Service {http://rice.kuali.org/ksb/v2_0}ServiceRegistryService from class org.kuali.rice.ksb.api.registry.ServiceRegistry
            2012-03-19 10:44:37,878 [Scanner-2] WARN org.apache.cxf.jaxws.WrapperClassGenerator - {http://rice.kuali.org/ksb/v2_0}getOnlineServiceByNamerequires a wrapper bean but problems with ASM has prevented creating one.  Operation may not work correctly.
            2012-03-19 10:44:38,410 [Scanner-2] WARN org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for {http://rice.kuali.org/ksb/v2_0}ServiceRegistryService#{http://rice.kuali.org/ksb/v2_0}getAllOnlineServices has thrown exception, unwinding now
            org.apache.cxf.binding.soap.SoapFault: Empty username for specified action.
            	at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:223)
            	at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:134)
            	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
            	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:544)
            	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:341)
            	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:294)
            	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
            	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
            	at $Proxy55.getAllOnlineServices(Unknown Source)
            	at org.kuali.rice.ksb.impl.bus.LazyRemoteServiceRegistryConnector.getAllOnlineServices(LazyRemoteServiceRegistryConnector.java:67)
            	at org.kuali.rice.ksb.impl.bus.diff.ServiceRegistryDiffCalculatorImpl.diffServices(ServiceRegistryDiffCalculatorImpl.java:51)
            	at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.synchronizeAndProcess(ServiceBusImpl.java:411)
            	at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.synchronizeRemoteServices(ServiceBusImpl.java:433)
            	at org.kuali.rice.ksb.messaging.config.KSBConfigurer.doAdditionalModuleStartLogic(KSBConfigurer.java:259)
            	at org.kuali.rice.core.framework.config.module.ModuleConfigurer.start(ModuleConfigurer.java:67)
            	at org.kuali.rice.core.framework.config.module.ModuleConfigurer.afterPropertiesSet(ModuleConfigurer.java:79)
            	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
            	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
            	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
            	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
            	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
            	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
            	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
            	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
            	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
            	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
            	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
            	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
            	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
            	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
            	at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:672)
            	at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:403)
            	at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:664)
            	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:239)
            	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1212)
            	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610)
            	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453)
            	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
            	at org.eclipse.jetty.deploy.ContextDeployer.deploy(ContextDeployer.java:354)
            	at org.eclipse.jetty.deploy.ContextDeployer.access$000(ContextDeployer.java:77)
            	at org.eclipse.jetty.deploy.ContextDeployer$ScannerListener.fileAdded(ContextDeployer.java:102)
            	at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:604)
            	at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:535)
            	at org.eclipse.jetty.util.Scanner.scan(Scanner.java:398)
            	at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:348)
            	at java.util.TimerThread.mainLoop(Timer.java:512)
            	at java.util.TimerThread.run(Timer.java:462)
            
            Show
            eghm-kuali-m Erik Meade added a comment - Using https://wiki.kuali.org/display/KULRICE/Kuali+Rice+Remote+Load+Test+Client I've been getting: ServiceRegistryService# http://rice.kuali.org/ksb/v2_0 getAllOnlineServices has thrown exception org.apache.cxf.binding.soap.SoapFault: Empty username for specified action. 2012-03-19 10:44:37,693 [Scanner-2] INFO org.kuali.rice.ksb.messaging.config.KSBConfigurer - Synchronizing remote services with service bus after KSB startup... 2012-03-19 10:44:37,751 [Scanner-2] INFO org.apache.cxf.service.factory.ReflectionServiceFactoryBean - Creating Service {http: //rice.kuali.org/ksb/v2_0}ServiceRegistryService from class org.kuali.rice.ksb.api.registry.ServiceRegistry 2012-03-19 10:44:37,878 [Scanner-2] WARN org.apache.cxf.jaxws.WrapperClassGenerator - {http: //rice.kuali.org/ksb/v2_0}getOnlineServiceByNamerequires a wrapper bean but problems with ASM has prevented creating one. Operation may not work correctly. 2012-03-19 10:44:38,410 [Scanner-2] WARN org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for {http: //rice.kuali.org/ksb/v2_0}ServiceRegistryService#{http://rice.kuali.org/ksb/v2_0}getAllOnlineServices has thrown exception, unwinding now org.apache.cxf.binding.soap.SoapFault: Empty username for specified action. at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:223) at org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor$WSS4JOutInterceptorInternal.handleMessage(WSS4JOutInterceptor.java:134) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:544) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:341) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:294) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) at $Proxy55.getAllOnlineServices(Unknown Source) at org.kuali.rice.ksb.impl.bus.LazyRemoteServiceRegistryConnector.getAllOnlineServices(LazyRemoteServiceRegistryConnector.java:67) at org.kuali.rice.ksb.impl.bus.diff.ServiceRegistryDiffCalculatorImpl.diffServices(ServiceRegistryDiffCalculatorImpl.java:51) at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.synchronizeAndProcess(ServiceBusImpl.java:411) at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.synchronizeRemoteServices(ServiceBusImpl.java:433) at org.kuali.rice.ksb.messaging.config.KSBConfigurer.doAdditionalModuleStartLogic(KSBConfigurer.java:259) at org.kuali.rice.core.framework.config.module.ModuleConfigurer.start(ModuleConfigurer.java:67) at org.kuali.rice.core.framework.config.module.ModuleConfigurer.afterPropertiesSet(ModuleConfigurer.java:79) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:672) at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:403) at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:664) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:239) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1212) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.deploy.ContextDeployer.deploy(ContextDeployer.java:354) at org.eclipse.jetty.deploy.ContextDeployer.access$000(ContextDeployer.java:77) at org.eclipse.jetty.deploy.ContextDeployer$ScannerListener.fileAdded(ContextDeployer.java:102) at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:604) at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:535) at org.eclipse.jetty.util.Scanner.scan(Scanner.java:398) at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:348) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462)
            Hide
            ewestfal Eric Westfall added a comment -

            Erik, James Bennett who is on my team has already created something like this. I added him as a watcher, feel free to get in touch with him about it if he doesn't comment on the jira here.

            Show
            ewestfal Eric Westfall added a comment - Erik, James Bennett who is on my team has already created something like this. I added him as a watcher, feel free to get in touch with him about it if he doesn't comment on the jira here.
            Hide
            jawbenne James Bennett added a comment -

            Here is a copy of the registry application we've set up here at IU. It uses our artifacts and package structure, but its only 5 files so it should be fairly straightforward to convert to fit your needs. If you have any questions please let me know.

            Show
            jawbenne James Bennett added a comment - Here is a copy of the registry application we've set up here at IU. It uses our artifacts and package structure, but its only 5 files so it should be fairly straightforward to convert to fit your needs. If you have any questions please let me know.
            Hide
            eghm-kuali-m Erik Meade added a comment -

            Having James' solution, is it now just a matter or renaming the package structure and adding to subversion. Would this go under ksb/registry-impl ? Or would it be a toplevel package like sampleapp and standalone?

            Show
            eghm-kuali-m Erik Meade added a comment - Having James' solution, is it now just a matter or renaming the package structure and adding to subversion. Would this go under ksb/registry-impl ? Or would it be a toplevel package like sampleapp and standalone?
            Hide
            eghm-kuali-m Erik Meade added a comment -

            Looks like it should be at the same level as sampleapp and standalone. Like sampleapp and standalone (and unlike ksb/client-impl and ksb/server-impl) it has its own configuration location. The spring bean configuration is largely like Standalones, without the beans from org/kuali/rice/config/RiceSpringBeans.xml except, of course the <bean id="ksbConfigurer" class="org.kuali.rice.ksb.messaging.config.KSBConfigurer"/> . Also bitronix is not available as is, but I think we can reuse <import resource="classpath:org/kuali/rice/core/RiceJTASpringBeans.xml"/> and <import resource="classpath:org/kuali/rice/core/RiceDataSourceSpringBeans.xml"/> from StandaloneSpringBeans.xml.

            How does "servicebus" strike you as the directory name? It's another "s" so it will be close to sampleapp and standalone.

            Show
            eghm-kuali-m Erik Meade added a comment - Looks like it should be at the same level as sampleapp and standalone. Like sampleapp and standalone (and unlike ksb/client-impl and ksb/server-impl) it has its own configuration location. The spring bean configuration is largely like Standalones, without the beans from org/kuali/rice/config/RiceSpringBeans.xml except, of course the <bean id="ksbConfigurer" class="org.kuali.rice.ksb.messaging.config.KSBConfigurer"/> . Also bitronix is not available as is, but I think we can reuse <import resource="classpath:org/kuali/rice/core/RiceJTASpringBeans.xml"/> and <import resource="classpath:org/kuali/rice/core/RiceDataSourceSpringBeans.xml"/> from StandaloneSpringBeans.xml. How does "servicebus" strike you as the directory name? It's another "s" so it will be close to sampleapp and standalone.
            Hide
            eghm-kuali-m Erik Meade added a comment -

            Or perhaps serviceregistry?

            Show
            eghm-kuali-m Erik Meade added a comment - Or perhaps serviceregistry?

              People

              • Assignee:
                eghm-kuali-m Erik Meade
                Reporter:
                ewestfal Eric Westfall
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated: