Java 如何在OSGI包中调用数据源?

Java 如何在OSGI包中调用数据源?,java,netbeans,jsf-2,glassfish,osgi,Java,Netbeans,Jsf 2,Glassfish,Osgi,可以调用@Datasourceinsight OSGI捆绑包吗?我在Glassfish 3.1.1服务器中配置了连接池。我可以从简单的JSF应用程序中进行查询。 这是捆绑包的源代码: 这是我试图编写的源代码: package org.DX_57.osgi.SH_27.impl; import javax.activation.DataSource; import javax.annotation.Resource; import org.DX_57.osgi.SH_27.api.Sessio

可以调用
@Datasource
insight OSGI捆绑包吗?我在Glassfish 3.1.1服务器中配置了连接池。我可以从简单的JSF应用程序中进行查询。 这是捆绑包的源代码:

这是我试图编写的源代码:

package org.DX_57.osgi.SH_27.impl;

import javax.activation.DataSource;
import javax.annotation.Resource;
import org.DX_57.osgi.SH_27.api.SessionHandle;

public class SessionHandleImpl implements SessionHandle {

        public String error_Message = null;
        public String error_Database = null;

        /** Call the Oracle JDBC Connection driver */
        @Resource(name="jdbc/Oracle")
        public DataSource ds;

    public String sayHello(String name) {
        return "Howdy " + name;
    }                      
}
当我尝试使用Netbeans编译代码时,会出现以下错误:

[bundle:bundle]
Bundle org.DX_57.osgi.SH_27:SH_27-impl:bundle:1.0-SNAPSHOT : Unresolved references to [javax.activation, javax.annotation] by class(es) on the Bundle-Classpath[Jar:dot]: [org/DX_57/osgi/SH_27/impl/SessionHandleImpl.class]
Error(s) found in bundle configuration
------------------------------------------------------------------------
Reactor Summary:

SH_27 ............................................. SUCCESS [0.639s]
SH_27-api ......................................... SUCCESS [5.162s]
SH_27-impl ........................................ FAILURE [1.930s]
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 8.950s
Finished at: Mon Jan 23 15:59:42 EET 2012
Final Memory: 18M/47M
------------------------------------------------------------------------
Failed to execute goal org.apache.felix:maven-bundle-plugin:2.3.6:bundle (default-bundle) on project SH_27-impl: Error(s) found in bundle configuration -> [Help 1]
你知道我错过了什么吗


更新:在试图计算我的捆绑包的OSGi清单并决定在jar中打包什么时,捆绑包插件无法查看javax.annotation和javax.activation类。我必须修复pom.xml。 这是OSGI包的源代码

我必须如何修复POM文件


更新2:这是Netbeans的完整错误堆栈:

这是POM文件:


您能帮我修复POM文件吗?

不确定如何运行框架,对于felix来说,如果您在bootdelegation包中指定javax.activation(以及您需要的其他包),可能会有所帮助;在framework.properties中使用org.osgi.framework.bootdegration。

这是调用datasource insight osgi bundle的正确方法吗@注入@OSGiService(true,“(jndi name=jdbc/Oracle)”)数据源ds;在bootdelegation中指定javax.activation是一个非常糟糕的主意!此外,@user1103606甚至不能构建他的代码,所以在这个阶段谈论运行时设置有点愚蠢。只是一个理智的检查:你确定它应该是一个
javax.activation.DataSource
?。注释暗示它应该是
javax.sql.DataSource