Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA应用程序的外部插件框架_Java_Node.js_Web Applications_Architecture_Pf4j - Fatal编程技术网

JAVA应用程序的外部插件框架

JAVA应用程序的外部插件框架,java,node.js,web-applications,architecture,pf4j,Java,Node.js,Web Applications,Architecture,Pf4j,我使用SPRING和MongoDB构建了一个大型JAVA web应用程序, 在某些情况下,我希望允许我的用户上传他们自己的代码,然后应用程序将在必要时运行它。 我把这个操作称为“插件框架”,插件是用户的代码,当然我现在更喜欢在NodeJS中 是否有任何推荐/已知的体系结构用于此目的? 我读过和,但它们与我的需要大不相同 谢谢 您失去了对节点上运行的代码的完全控制。上传的代码可以访问网络,文件,数据库,你说的。这不是一个好计划 我建议使用Java中的嵌入式JS模块,称为rhino。在这里,您可以定

我使用SPRING和MongoDB构建了一个大型JAVA web应用程序, 在某些情况下,我希望允许我的用户上传他们自己的代码,然后应用程序将在必要时运行它。 我把这个操作称为“插件框架”,插件是用户的代码,当然我现在更喜欢在NodeJS中

是否有任何推荐/已知的体系结构用于此目的? 我读过和,但它们与我的需要大不相同


谢谢

您失去了对节点上运行的代码的完全控制。上传的代码可以访问网络,文件,数据库,你说的。这不是一个好计划

我建议使用Java中的嵌入式JS模块,称为rhino。在这里,您可以定义代码可以访问的环境

您可以在这里找到jdk7使用Java脚本的示例、Javadocs以及有关Java8更改的一些信息

更新:

在下面的注释中,如果代码在另一台服务器上运行,则表明您认为自己是安全的。其实问题还是一样。只是它不会影响应用程序的服务器,而是JS代码服务器


我的建议是正确的。使用内置Javascript引擎(Rhino或Nashorn)实现JS执行服务,并将运行的JS限制在沙箱中,您可以通过仔细实现的env访问方法控制脚本的访问范围。它实际上非常容易开始,并不比在节点上实现远程javascript实现引擎更复杂

您失去了对节点上运行的代码的完全控制。上传的代码可以访问网络,文件,数据库,你说的。这不是一个好计划

我建议使用Java中的嵌入式JS模块,称为rhino。在这里,您可以定义代码可以访问的环境

您可以在这里找到jdk7使用Java脚本的示例、Javadocs以及有关Java8更改的一些信息

更新:

在下面的注释中,如果代码在另一台服务器上运行,则表明您认为自己是安全的。其实问题还是一样。只是它不会影响应用程序的服务器,而是JS代码服务器


我的建议是正确的。使用内置Javascript引擎(Rhino或Nashorn)实现JS执行服务,并将运行的JS限制在沙箱中,您可以通过仔细实现的env访问方法控制脚本的访问范围。它实际上非常容易开始,并不比在节点上实现远程javascript实现引擎更复杂

如果您正在构建某种类型的“代码编译器”或“代码验证”,那么您应该避免使用类似pf4j的框架,因为它提供了称为“模块化应用程序/微内核”的“体系结构”模型,并且是OSGi框架的替代品之一[ex.Apache Felix],但我推断[查看标记]为应用程序构建体系结构,然后使用spring。也许你应该关注微服务架构,而不是模块化应用。如果你正在构建一种“代码编译器”或“代码验证”,那么你应该避免使用像pf4j这样的框架,因为它提供了称为“模块化应用程序/微内核”的“架构”模型,是OSGi框架的替代品之一[ex.Apache Felix]但我推断[查看标记]您为应用程序构建架构,然后使用spring。也许你应该看看微服务架构,而不是模块化应用。事实上,我很抱歉JS代码将在完全独立的服务器上执行,不会对我的代码进行访问或影响。因此,我希望它不在我的核心项目中,但能够执行这些JS文件并使用它们的输出。请参阅我的更新文章。我认为你的设计从安全角度来看是有缺陷的。事实上,我很抱歉JS代码将在完全独立的服务器上执行,不会对我的代码进行访问或影响。因此,我希望它不在我的核心项目中,但能够执行这些JS文件并使用它们的输出。请参阅我的更新文章。我认为你的设计从安全角度来看是有缺陷的。