Download [#OPENIG-910] ScriptableFilter : Get error `Cannot execute script

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
[OPENIG-910] ScriptableFilter : Get error `Cannot execute script` with groovy
scripts previously working Created: 10/Mar/16 Updated: 11/Apr/17 Resolved: 05/Apr/17
Status:
Project:
Component/s:
Affects
Version/s:
Fix Version/s:
Closed
OpenIG
Core
4.5.0, 5.0.0
Type:
Reporter:
Resolution:
Labels:
Remaining
Estimate:
Time Spent:
Original
Estimate:
Environment:
Bug
Jean-Charles Deville
Won't Fix
release-notes
Not Specified
Attachments:
config.json
generate_sso_token.groovy
attributes.groovy
pep_policy_attributes.json
Issue Links:
Relates
is related
to
is related
to
Sprint:
Flagged:
Support Ticket
IDs:
QA Assignee:
Not Applicable
Priority:
Assignee:
Votes:
Major
Guillaume Sauthier
0
Not Specified
Not Specified
OS : OSX 10.11.3
container : Tomcat 8.0.23
jdk : 1.8.0_60
OPENIG1666
OPENIG1667
pep-application-
Script migration: Use CHF blocking
API
Script migration: Use CHF nonblockin...
Resolved
Resolved
OpenIG Sprint 80, OpenIG Sprint 102
Impediment
Jean-Charles Deville
Description
Using groovy scripts to perform authentication on OpenAM-13.0.0, I get the error `Cannot execute script` with t
THU MAR 10 17:02:59 CET 2016 WARNING {ScriptableFilter}/handler/config/filters/0 --- Canno
THU MAR 10 17:02:59 CET 2016 WARNING {ScriptableFilter}/handler/config/filters/0 --- java.
java.lang.NoSuchMethodError: org.apache.xml.resolver.CatalogManager.setIgnoreMissingProper
# javax.script.ScriptException: java.lang.Exception: java.lang.NoSuchMethodError:
org.apache.xml.resolver.CatalogManager.setIgnoreMissingProperties(Z)V
#
at org.forgerock.openig.script.Script$GroovyImpl.run(Script.java:62)
#
at org.forgerock.openig.script.Script.run(Script.java:245)
#
at org.forgerock.openig.script.AbstractScriptableHeapObject.runScript(AbstractScri
#
at org.forgerock.openig.filter.ScriptableFilter.filter(ScriptableFilter.java:58)
#
at org.forgerock.http.handler.Chain.handle(Chain.java:55)
#
at org.forgerock.openig.filter.Chain.handle(Chain.java:69)
#
at org.forgerock.openig.decoration.baseuri.BaseUriHandler.handle(BaseUriHandler.ja
#
at org.forgerock.http.handler.Chain.handle(Chain.java:57)
#
at org.forgerock.openig.handler.router.NullResponseFilter.filter(NullResponseFilte
#
at org.forgerock.http.handler.Chain.handle(Chain.java:55)
#
at org.forgerock.openig.filter.RuntimeExceptionFilter.filter(RuntimeExceptionFilte
#
at org.forgerock.http.handler.Chain.handle(Chain.java:55)
#
at org.forgerock.openig.handler.router.Route.handle(Route.java:138)
#
at org.forgerock.openig.handler.router.RouterHandler.handle(RouterHandler.java:283
#
at org.forgerock.http.handler.Chain.handle(Chain.java:57)
#
at org.forgerock.http.routing.Router.handle(Router.java:92)
#
at org.forgerock.http.handler.Chain.handle(Chain.java:57)
#
at org.forgerock.http.filter.TransactionIdInboundFilter.filter(TransactionIdInboun
#
at org.forgerock.http.handler.Chain.handle(Chain.java:55)
#
at org.forgerock.http.servlet.HttpFrameworkServlet.service(HttpFrameworkServlet.ja
#
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
#
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
#
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
#
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
#
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
#
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
#
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
#
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
#
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.ja
#
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
#
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
#
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve
#
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88
#
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
#
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processo
#
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractPr
#
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1
#
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:147
#
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
#
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
#
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:
#
at java.lang.Thread.run(Thread.java:745)
# Caused by: java.lang.Exception: java.lang.NoSuchMethodError:
org.apache.xml.resolver.CatalogManager.setIgnoreMissingProperties(Z)V
#
... 42 more
# Caused by: java.lang.NoSuchMethodError: org.apache.xml.resolver.CatalogManager.setIgnore
#
at groovyx.net.http.ParserRegistry.<clinit>(ParserRegistry.java:111)
#
at groovyx.net.http.HTTPBuilder.<init>(HTTPBuilder.java:194)
#
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
#
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor
#
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructor
#
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
#
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:
#
at
org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callC
#
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallS
#
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractC
#
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractC
#
at generate_sso_token.run(generate_sso_token.groovy:32)
#
at groovy.util.GroovyScriptEngine.run(GroovyScriptEngine.java:577)
#
at org.forgerock.openig.script.Script$GroovyImpl.run(Script.java:58)
#
... 41 more
Notice that the message is logged at the level WARNING. I would expect it to be logged as an ERROR.
Find attached the routes and scripts used when encountering this error.
Notice that the issue occurs in the script `generate_sso_token.groovy`
Other way to reproduce the issue, using PyForge (error occurs but is now expected):
python run-pybot.py -s policyenforcementfilter -f openig
Comments
Comment by Violette Roche Montane [ 10/Mar/16 ]
After investigation, this bug starts when we pushed OPENIG-509 Update to OpenAM 13
artifacts
Comment by Violette Roche Montane [ 11/Mar/16 ]
The error above happens when multiple versions of a class in the classpath are coexisting. This
causes the NoClassDefFoundError.
It seems that the CatalogManager class used by the 'xml-resolver-1.2.jar' required by the
HTTPBuilder API exists in multiple versions.
The HTTPBuilder is often in conflict when 'xerces' and 'jaxb-xjc' jars are used. (unfortunately
OpenAM-13 uses both).
Comment by Guillaume Sauthier [ 11/Mar/16 ]
I've been looking at Groovy ClassLoading and it seems that they always ask parent first when
loading class.
That means that, even if the groovy classloader has been filled with the appropriate jar files,
they may not be used if a parent loader has the same class.
Comment by Guillaume Sauthier [ 26/Apr/16 ]
There is no easy general solution to this problem (it may even be tricky with OSGi ...)
Comment by Guillaume Sauthier [ 29/Aug/16 ]
The workaround is to not use CatalogManager or libraries that depends on it (like Groovy
RESTClient).
Comment by Jean-Charles Deville [ 08/Nov/16 ]
Any new workaround ? (except asking user not to use CatalogManager or libraries that depends
on it (like Groovy RESTClient) ?!
Comment by Guillaume Sauthier [ 05/Apr/17 ]
With , an article has been prepared to help for script migration to supported APIs
Comment by Jean-Charles Deville [ 11/Apr/17 ]
Release 5.0.0 (+cleanup):
Close issues that have been tagged with "Not a Defect" or "won't Fix"
Close issue that are now tested in automated tests
Generated at Wed May 10 17:33:26 BST 2017 using JIRA 7.2.2#72004sha1:9d5132893cc8c728a3601a9034a1f8547ef5c7be.
Related documents