[
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: [email protected]
For additional commands, e-mail: [email protected]