Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

Is it possible to call Groovy script form java in OSGI bundle?

pilmenkov
Level 2
Level 2

I have Groovy Console installed and working in AEM 6.5

 

I have OSGI bundle deployed and active which tries to execute the Groovy script like

ScriptEngine engine = new ScriptEngineManager().getEngineByName("groovy");

And the engine object is null.

 

The call new ScriptEngineManager().getEngineFactories() gives only Oracle Nashorn: ECMAScript engine.

But the /system/console/slingscripting page shows that the groovy is here:

Groovy Scripting Engine 2.0
-------------------------------------
- Language : Groovy, 2.4.15
- Extensions : groovy
- MIME Types : application/x-groovy
- Names : groovy, Groovy

 

What may be missed in my OSGI bundle or in AEM configuration?

Why it does not have access to Groovy when Groovy Console is ok?

1 Accepted Solution
Jörg_Hoh
Correct answer by
Employee
Employee

There is a service in Sling, which implements the javax.script.ScriptEngineManager interface, from where you can start.

 

On the other hand, the scripting engines are registered as instances of the ScriptEngineFactory, so you can reference them directly.

 

 

 

View solution in original post

2 Replies
Jörg_Hoh
Correct answer by
Employee
Employee

There is a service in Sling, which implements the javax.script.ScriptEngineManager interface, from where you can start.

 

On the other hand, the scripting engines are registered as instances of the ScriptEngineFactory, so you can reference them directly.

 

 

 

View solution in original post

pilmenkov
Level 2
Level 2

Thank you Jörg_Hoh, the option 1 is perfect!

It was enough just to add to my @component the following filed:

@reference
ScriptEngineManager scriptEngineManager;