[ https://issues.apache.org/jira/browse/SOLR-14404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17193266#comment-17193266 ]
Noble Paul commented on SOLR-14404: ----------------------------------- The errors are too infrequent . I have literally beasted this 100's of times. I made some improvements but I'm not even sure if it's even worth it > CoreContainer level custom requesthandlers > ------------------------------------------ > > Key: SOLR-14404 > URL: https://issues.apache.org/jira/browse/SOLR-14404 > Project: Solr > Issue Type: New Feature > Components: packages > Reporter: Noble Paul > Assignee: Noble Paul > Priority: Major > Fix For: 8.6 > > Attachments: 291.zip, 555.zip, 670.zip > > Time Spent: 5.5h > Remaining Estimate: 0h > > caveats: > * The class should be annotated with {{org.apache.solr.api.EndPoint}}. > Which means only V2 APIs are supported > * The path should have prefix {{/api/plugin}} > add a plugin > {code:java} > curl -X POST -H 'Content-type:application/json' --data-binary ' > { > "add": { > "name":"myplugin", > "class": "full.ClassName", > "path-prefix" : "some-path-prefix" > } > }' http://localhost:8983/api/cluster/plugins > {code} > add a plugin from a package > {code:java} > curl -X POST -H 'Content-type:application/json' --data-binary ' > { > "add": { > "name":"myplugin", > "class": "pkgName:full.ClassName" , > "path-prefix" : "some-path-prefix" , > "version: "1.0" > } > }' http://localhost:8983/api/cluster/plugins > {code} > remove a plugin > {code:java} > curl -X POST -H 'Content-type:application/json' --data-binary ' > { > "remove": "myplugin" > }' http://localhost:8983/api/cluster/plugins > {code} > The configuration will be stored in the {{clusterprops.json}} > as > {code:java} > { > "plugins" : { > "myplugin" : {"class": "full.ClassName", "path-prefix" : "some-path-prefix" } > } > } > {code} > example plugin > {code:java} > public class MyPlugin { > private final CoreContainer coreContainer; > public MyPlugin(CoreContainer coreContainer) { > this.coreContainer = coreContainer; > } > @EndPoint(path = "/$path-prefix/path1", > method = METHOD.GET, > permission = READ) > public void call(SolrQueryRequest req, SolrQueryResponse rsp){ > rsp.add("myplugin.version", "2.0"); > } > } > {code} > This plugin will be accessible on all nodes at > {{/api/some-path-prefix/path1}}. It's possible to add more methods at > different paths. Ensure that all paths start with {{$path-prefix}} because > that is the prefix in which the plugin is registered with. So > {{/some-path-prefix/path2}} , {{/some-path-prefix/my/deeply/nested/path}} are > all valid paths. > It's possible that the user chooses to register the plugin with a different > name. In that case , use a template variable as follows in paths > {{/cluster/some/other/path}} -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org