[keycloak-dev] Access datasource from a CLI
Stan Silvert
ssilvert at redhat.com
Wed Oct 21 14:08:51 EDT 2015
On 10/21/2015 1:57 PM, Stian Thorgersen wrote:
> We manage our own EntityManagerFactory and EntityManager as well as
> our own transactions. So that's not true.
If all you need is the datasource info that lives in standalone.xml then
yes, we can get that.
>
> On 21 October 2015 at 19:53, Stan Silvert <ssilvert at redhat.com
> <mailto:ssilvert at redhat.com>> wrote:
>
> On 10/21/2015 1:23 PM, Stian Thorgersen wrote:
>> Guys - all we need is the datasource. I want to create a "db
>> tool" for Keycloak, this is not for the Admin CLI
>>
>> We don't need CDI, EJB, etc.. All we need is the datasource, or
>> at least the connection information for the datasource + we also
>> need JBoss modules so we can get the required classes.
>>
>> If offline mode can do this then that'd be good, but I seem to
>> remember datasources weren't available?
> If you want to use our existing JPA infrastructure then you need a
> JPA container. That's where this other stuff all gets pulled in.
>
> Hey, let's just use JDBC! :-)
>
>>
>> On 21 October 2015 at 18:22, Marko Strukelj <mstrukel at redhat.com
>> <mailto:mstrukel at redhat.com>> wrote:
>>
>> On Wed, Oct 21, 2015 at 5:57 PM, Stan Silvert
>> <ssilvert at redhat.com <mailto:ssilvert at redhat.com>> wrote:
>>
>> On 10/21/2015 11:14 AM, Marko Strukelj wrote:
>>
>> I haven't taken a very close look at Swarm yet, but I
>> assumed you start Wildfly embedded in the same JVM as
>> your Main class. If that is the case, then there
>> should be no problem communicating with any kind of
>> deployed component via heap directly - just lookup
>> some singleton ...
>>
>> Classloading constraints are what you usually run up
>> against. You can't use your own version of a class that
>> was loaded from a different classloader. I don't think
>> Swarm helps you get around that, but just assumes you
>> will access the WAR in the usual way through an HTTP
>> port. But I could be wrong as I haven't worked with
>> Swarm either.
>>
>> Here is an explanation of the problem based on an old
>> version of JBoss:
>> https://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/JBoss_JMX_Implementation_Architecture-Class_Loading_and_Types_in_Java.html
>>
>> With jboss-modules, it's easier to get around these
>> problems, but you still run into the isolation built into
>> the container itself, especially in the case of a WAR.
>>
>> CLI running in the same JVM as Wildfly would get bootstrapped
>> through jboss-modules, and would package it's classes as a
>> jboss module. It can then deploy additional 'in-container'
>> logic that needs actual access to datasources via many
>> different mechanisms. It can be a .jar containing a SLSB, a
>> .war, a .sar, a POJO (via pojo subsystem), it can be a custom
>> subsystem that gets installed ... In every of these cases it
>> can then have access to resource objects bound to java:jboss
>> JNDI space ... And in every of these cases it uses shared
>> types loaded via dependencies on jboss-modules.
>>
>>
>>
>> If that is not the case, then we would need some kind
>> of interprocess communication going. With shell the
>> roles of who connects where could also be reversed,
>> and a started up Wildfly instance could have a
>> service connecting out to local port bound by our CLI
>> rather than the other way around.
>>
>> I don't think the direction of the connection matters so
>> much as the fact that you need a serialized format to
>> issue commands to a foreign container.
>>
>> Or, as I mentioned, you need the CLI to actually live
>> inside the container.
>>
>>
>> CLI needs to be able to execute its logic inside the
>> container in order to harness the datasources, but the UI
>> part that takes care of getting the inputs and displaying the
>> outputs - e.g. CraSH, does not have to be inside the container.
>>
>> I don't know what you mean by 'serialized format to issue
>> commands to a foreign container', but if it means taking care
>> of UI interaction, CraSH looks pretty decent CLI, easy to
>> extend with custom commands.
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/keycloak-dev/attachments/20151021/af6853e4/attachment.html
More information about the keycloak-dev
mailing list