我有一个提供服务的捆绑。OSGI - 捆绑服务的两个对象
我的包实施看起来是这样的:
class ServiceImpl implements Service
{
Object value;
@Override
public void setValue(Object value)
{
this.value = value;
}
@Override
public Object getValue()
{
return value;
}
}
在我的Java应用程序,我加载此包到OSGi框架,并创建两个引用到服务,企图有不同的值的两个对象“值”。
不幸的是,这似乎并不奏效。该服务始终返回由任一对象设置的最后一个值。我怎样才能克服这个问题?
下面是该问题的例子:
Service object1 = context.getService(reference1);
Service object2 = context.getService(reference2);
Integer one= 1;
Integer two =2;
object1.setValue(1);
object2.setValue(2);
System.out.println(object1.getValue()); //returns 2 !!!!!!!!!!!!!!!!!!
System.out.println(object2.getValue()); //returns 2
我曾经服务工厂,但它似乎不适合我的情况非常有用。我该怎么办?谢谢。
感谢。忘记参考服务。有没有其他方法可以让包类的两个对象具有不同的值?一些符合我需要的东西? –
OSGi配置管理服务可能有用吗?每种相同服务都可以存在配置。你甚至可以在配置文件中设置'值'。 – Tony
您可以使用newObject(args)等方法将您的服务设计为工厂。然后,一个客户端软件包可以获取您的服务并根据需要多次调用newObject。就像Balazs建议的那样。 –