java - 使用 Amdatu 创建 Mongodb OSGI Bundle 时 bundle 未解析

标签 java mongodb apache-felix osgi-bundle amdatu

我正在使用 org.amdatu.mongo 服务工厂为 Mongodb 创建 OSGi bundle ,如下 this guide我使用 Gridfs 进行存储。我正在使用 eclipse Bndtool 插件。 为此,我创建了一个名为 AgendaMongo 的接口(interface)和一个 ActivatorImplementation 类,这里是两者的代码

public class Activator extends DependencyActivatorBase {

@Override
public void init(BundleContext arg0, DependencyManager manager)
        throws Exception {
    manager.add(createComponent()
            .setInterface(AgendaMongo.class.getName(), null)
            .setImplementation(Gridfs_Mongodb.class));
}

以及实现

public class Gridfs_Mongodb implements AgendaMongo{
GridFSInputFile gfsinput=null;
private volatile MongoDBService mongoservice;
public Object store_in_db() {
    GridFSInputFile gfsinput=null;
    try {
        GridFS gfsHandler;
        gfsHandler = new GridFS(mongoservice.getDB(), "rest_data");// database
        File uri = new File("f:\\get1.jpg");                                    // name and
        gfsinput = gfsHandler.createFile(uri);
        gfsinput.saveChunks(1000);
        gfsinput.setFilename("new file");
        gfsinput.save();
        System.out.println(gfsinput.getId());
        //save_filepath("file",gfsinput.getId());
        Object get_id = gfsinput.getId();//get_filename();
        System.out.println(getData(get_id));
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return gfsinput.getId();
}

/*
 * Retrieving the file
 */
public InputStream getData(Object file_id) {
    GridFS gfsPhoto = new GridFS(mongoservice.getDB(), "rest_data");
    GridFSDBFile dataOutput = gfsPhoto.findOne((ObjectId) file_id);
    DBCursor cursor = gfsPhoto.getFileList();
    while (cursor.hasNext()) {
        System.out.println(cursor.next());
    }
    System.out.println(dataOutput);
    return dataOutput.getInputStream();

}


}

现在使用 apache Felix Gogo 编译器运行和测试它,我收到以下异常。

! could not resolve the bundles
! Failed to start bundle agenda.mongodb.mongo_gfs-0.0.0, exception Unresolved constraint in bundle agenda.mongodb.mongo_gfs [7]: Unable to resolve 7.0: missing requirement [7.0] osgi.wiring.package; (&(osgi.wiring.package=com.mongodb)(version>=2.11.0)(!(version>=3.0.0)))

最佳答案

您还需要安装标准 Mongo 驱动程序包:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

关于java - 使用 Amdatu 创建 Mongodb OSGI Bundle 时 bundle 未解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24818458/

相关文章:

java - 在 Twitter/Apache Storm 中共享资源

java - 将 java.util.Date 舍入到一天结束

java - 无法解析 JSON

javascript - 无法使用 meteor 表单中的动态数组 id 更新 mongo 值

node.js - Mongoose 按日期查询

osgi - Pax Exam 运行测试两次

java - Apache Felix 文件安装无法正常工作

java - 处理 PopupWindow 内的事件

node.js - 如何按条件匹配子文档中的数组元素

java - OSGi 服务引用为空(从启动器到 bundle 的服务)