我有Neo4j非托管扩展。我希望将某些服务创建为单例并通过@Context
我的资源提供。
像这样:
@Path("/example")
public class ExampleResource {
public ExampleResource(@Context CostlyService costlyService) { // <<---
// use it here
}
}
如何做到这一点?
Neo4j具有PluginLifecycle接口,这使我们有可能进入Neo4j服务器生命周期,并为注入博客文章提供我们自己的服务。
因此,我们有服务。让我们以这个为例:
public interface CostlyService {
}
public class CostlyServiceImpl implements CostlyService {
public CostlyService() {
// a LOT of work done here
}
//...
}
现在,我们需要进行自己的PluginLifecycle
实现:
public class ExamplePluginLifecycle implements PluginLifecycle {
@Override
public Collection<Injectable<?>> start(GraphDatabaseService graphDatabaseService,
Configuration config) {
final List<Injectable<?>> injectables = new ArrayList<>();
return injectables;
}
@Override
public void stop() {
}
}
如您所见,可注射列表目前为空。我们将很快在那里添加我们的服务。
重要提示: 您必须注册您的PluginLifecycle
实现,因此可以通过SPI使用:
// file: META-INF/services/org.neo4j.server.plugins.PluginLifecycle
my.company.extension.ExamplePluginLifecycle
这将使PluginLifecycle
Neo4j服务器可以发现您。
现在我们需要创建实际的注射剂。让我们为Injectable
接口编写实现:
public final class TypedInjectable<T> implements Injectable<T> {
private final T value;
private final Class<T> type;
private TypedInjectable(final T value, final Class<T> type) {
this.value = value;
this.type = type;
}
public static <T> TypedInjectable<T> injectable(final T value, final Class<T> type) {
return new TypedInjectable<>(value, type);
}
@Override
public T getValue() {
return value;
}
@Override
public Class<T> getType() {
return type;
}
}
这将作为我们服务的简单容器。用法:
import static my.company.extension.TypedInjectable.injectable;
injectable(new CostlyServiceImpl(), CostlyService.class);
现在,我们可以将注射剂添加到中了PluginLifecycle
。
@Override
public Collection<Injectable<?>> start(GraphDatabaseService graphDatabaseService,
Configuration config) {
final List<Injectable<?>> injectables = new ArrayList<>();
injectables.add(injectable(new CostlyServiceImpl, CostlyService.class)); // <<---
return injectables;
}
更改之后,我们的CostlyService将通过@Context用于我们的资源:
@Path("/example")
public class ExampleResource {
public ExampleResource(@Context CostlyService costlyService) {
// use it here
}
// ...
}
提示 :将PluginLifecycle与资源一起放在同一包或子包中。
问题内容: 我对项目有一些特定要求,因此决定实施不受管理的Neo4j扩展。 我在Neo4j文档中找到了以下信息: 非托管扩展 测试您的扩展 这看起来是一个好的开始。但是我无法为我工作。 是否有一些更完整的工作示例/模板可以用作参考? 问题答案: “手工”解决方案 TL; DR; - https://github.com/FylmTM/neo4j-unmanaged-extension- templ
我的neo4j服务器有一个非托管扩展。 代码如下。 当我部署代码时,我得到了500个内部错误。如果我删除代码 Result result = database.execute( “MATCH (n:KISI) where id(n)=1 return n” ); 然后一切都很好。 我检查了日志文件,错误如下 2015年8月13日3:34:36AM com . sun . jersey . SPI
我部署了一个Neo4j非托管扩展。可以使用REST客户端调用非托管扩展并成功返回结果。问题是,当我尝试从另一个java类调用/调用非托管扩展时,它会继续抛出未经授权的401。 我使用Spring RestTemboard来调用非托管扩展。 我的代码: 完全错误:
在尝试将spring和jersey集成到我的spring-data-neo4j非托管服务器插件中时,我有点不知所措。我已经创建了带有neo4j注释的POJO模型,以便在商店中持久化。除此之外,我还为数据操作创建了spring-data-neo4j存储库。我创建了一个springContext。xml文件并将其放在resources文件夹下。 此外,我已经设置了Spring显示器初始化器并初始化了S
目录 10.1. 服务器插件 10.2. 非托管扩展 Neo4j服务器可以通过插件或者非托管扩展来增强。为了获取更多关于服务器的信息,请参考:第 17 章 Neo4j服务器。 10.1. 服务器插件 内容提示 - 服务器的功能可以通过增加插件的方式来增强。 - 插件是用户自己编码完成的,以便增强数据库,节点以及属性的功能。 - Neo4j服务器在与客户端通过HTTP方式进行交互时使用这些自定义插件
问题内容: 很抱歉这个新手问题。node.js可以在任何托管提供商(如Fastdomain)中运行吗?我们在fastdomain中有一个帐户,我们在其中上传了用PHP制作的网站。我在主机中允许使用SSH,并尝试安装node.js,但无法正常工作。我一直在搜索互联网,但对此没有确切答案。 问题答案: 不,您不能在每个托管服务提供商上运行Node.js。您需要某些基本功能。如果您的托管服务提供商不像H