Kuali Rice Development
  1. Kuali Rice Development
  2. KULRICE-2983

Update thin client integration model so that it provides for proper connection to KIM services

    Details

    • Type: Bug Fix Bug Fix
    • Status: Closed Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.0
    • Component/s: Configuration, Development
    • Labels:
      None
    • Similar issues:
      KULRICE-3784KEW Thin Client integration does not work properly
      KULRICE-6360Remove RunMode.THIN and other traces of legacy "THIN" mode as it is no longer needed
      KULRICE-6683Add a "THIN" client run mode to KEW, KIM, and KSB modules
      KULRICE-4902Rice Thin Client Refactor
      KULRICE-2695Create a rice-sample-applications repository in SVN and update sample embedded and thin client examples from 0.9.2/0.9.3 and put them in there
      KULRICE-3778KEW Thin Client mode appears to load the entire KEWSpringBeans.xml file, resulting in encryption.key being required to be specified
      KULRICE-5056Convert DocumentSearch objects and services to new model
      KULRICE-1403Update KIM/KOM data model and service interfaces from changes settled on during the KS retreat in Vancouver
      KULRICE-3721The "remote" run mode for KIM (and other Rice modules?) does not allow proper consumption of services from the bus
      KULRICE-4988Annotate outgoing service calls with client version number

      Description

      The thin client integration model is a bit crusty at the moment so I think it's going to need some concerted work in one of the near future releases of Rice. A think a dependency on that will be allow for the service registry to be accessed via a web service.

      At any rate, we need to look at the current situation and make this work for Rice 1.0.

      Traditionally, the thin client integration model has provided for remote service-based integration with the two main KEW services:

      1) WorkflowUtility
      2) WorkflowDocumentActions

      In Rice 1.0, the workflow client (in particular WorkflowDocument) now has a potential dependency on the KIM IdentityService because it uses that to resolve principal names to principal ids.

      Currently we have the following configuration parameters:

      workflowutility.javaservice.endpoint
      workflowdocument.javaservice.endpoint

      We need to add

      identity.javaservice.endpoint

      Then client applications will need to configure that URL to point to the KIM IdentityService.

      In addition to that, we'll want to start KIM in such a way that we don't initialize any of the services in the client and that any requests for the identity service will return the remote proxies. You can see how we do this currently for KEW in:

      ThinClientKEWConfigurer
      ThinClientLifecycle
      ThinClientResourceLoader

        Issue Links

          Activity

          Hide
          Eric Westfall added a comment -

          Peter, you will likely need to address this issue first in order to make some of the load tests that we have work since they use thin client integration.

          Show
          Eric Westfall added a comment - Peter, you will likely need to address this issue first in order to make some of the load tests that we have work since they use thin client integration.
          Hide
          Peter Giles (Inactive) added a comment - - edited

          Checked in the following – I'm almost there (I think):

          ThinClientResourceLoader.java:

          • added constants IDENTITY_ENDPOINT and SECURE_IDENTITY_ENDPOINT
          • added getIdentityService() method

          SimpleWebServiceClientTest.java:

          • removed @Ignore annotation
          • added testThinIdentityService()
          • added kewConfigurer.setRunMode(KEWConfigurer.REMOTE_RUN_MODE) to setUpWebServices
          • getting service URLs from the remoted service registry instead of hard coding them
          • note that the service namespaces & names are still hard coded

          kew-config-defaults.xml"

          • added param secure.identity.javaservice.endpoint (defaults to true)
          • this param name equals ThinClientResourceLoader.SECURE_IDENTITY_ENDPOINT

          kew-test-config.xml:

          • changed keystore parameters so that ksb/src/test/resources/keystore/ricekeystore is used
          • has kestore alias "rice", etc
          Show
          Peter Giles (Inactive) added a comment - - edited Checked in the following – I'm almost there (I think): ThinClientResourceLoader.java: added constants IDENTITY_ENDPOINT and SECURE_IDENTITY_ENDPOINT added getIdentityService() method SimpleWebServiceClientTest.java: removed @Ignore annotation added testThinIdentityService() added kewConfigurer.setRunMode(KEWConfigurer.REMOTE_RUN_MODE) to setUpWebServices getting service URLs from the remoted service registry instead of hard coding them note that the service namespaces & names are still hard coded kew-config-defaults.xml" added param secure.identity.javaservice.endpoint (defaults to true) this param name equals ThinClientResourceLoader.SECURE_IDENTITY_ENDPOINT kew-test-config.xml: changed keystore parameters so that ksb/src/test/resources/keystore/ricekeystore is used has kestore alias "rice", etc
          Hide
          Peter Giles (Inactive) added a comment -

          I have this working, but I need to commit it to the 1.0 branch. I need to improve my unit test before I do that. Attaching my context...

          Show
          Peter Giles (Inactive) added a comment - I have this working, but I need to commit it to the 1.0 branch. I need to improve my unit test before I do that. Attaching my context...
          Hide
          Peter Giles (Inactive) added a comment -

          committed to the 1.0.0 branch:

          ThinClientKEWConfigurer.java:

          • Call KEWConfigurer.setRunMode(KEWConfigurer.REMOTE_RUN_MODE) so that
            services not needed by the thin client such as database connections
            aren't required.

          ThinClientResourceLoader.java:

          • Added GROUP_ENDPOINT and SECURE_GROUP_ENDPOINT constants.
          • Added getGroupService() method.

          kew-config-defaults.xml:

          • added param secure.group.javaservice.endpoint

          SimpleWebServiceClientTest.java:

          • added overrides of group service configuration properties
          • renamed testThinIdentityService to testThinKimServices
          • added basic test of group service to testThinKimServices

          I am having strange troubles with my unit test (ThinClientTest) so I haven't checked it in. The trouble stems from the fact that it has a couple of inner classes, which surefire dumbly attempts to instantiate and run as unit tests. See http://jira.codehaus.org/browse/SUREFIRE-535 for a brief description of the issue.

          Show
          Peter Giles (Inactive) added a comment - committed to the 1.0.0 branch: ThinClientKEWConfigurer.java: Call KEWConfigurer.setRunMode(KEWConfigurer.REMOTE_RUN_MODE) so that services not needed by the thin client such as database connections aren't required. ThinClientResourceLoader.java: Added GROUP_ENDPOINT and SECURE_GROUP_ENDPOINT constants. Added getGroupService() method. kew-config-defaults.xml: added param secure.group.javaservice.endpoint SimpleWebServiceClientTest.java: added overrides of group service configuration properties renamed testThinIdentityService to testThinKimServices added basic test of group service to testThinKimServices I am having strange troubles with my unit test (ThinClientTest) so I haven't checked it in. The trouble stems from the fact that it has a couple of inner classes, which surefire dumbly attempts to instantiate and run as unit tests. See http://jira.codehaus.org/browse/SUREFIRE-535 for a brief description of the issue.
          Hide
          Peter Giles (Inactive) added a comment -

          Replaced SimpleWebServiceClientTest with ThinClienTest, which will perhaps be a bit more brittle, but uses a complete configuration for a thin client, so it should help us to keep thin client mode working as we do future development. This completes the work for this bug.

          Show
          Peter Giles (Inactive) added a comment - Replaced SimpleWebServiceClientTest with ThinClienTest, which will perhaps be a bit more brittle, but uses a complete configuration for a thin client, so it should help us to keep thin client mode working as we do future development. This completes the work for this bug.
          Hide
          Eric Westfall added a comment -

          Bulk change of all Rice 1.0 issues to closed after public release.

          Show
          Eric Westfall added a comment - Bulk change of all Rice 1.0 issues to closed after public release.

            People

            • Assignee:
              Peter Giles (Inactive)
              Reporter:
              Eric Westfall
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Structure Helper Panel