Теперь я немного смущен, у меня есть 4 java-кодированных баночки, которые должны делиться одним и тем же экземпляром класса над ними. Я реализовал «Реализация синглтона Билла Пьюга» в своем коде. Проблема в том, что я запускаю эти банки, они показывают, что у них есть другой экземпляр класса singleton. Банки, которые запускаются на одной машине, имеют свою собственную JVM, загруженную или что? ниже - это то, что я реализовал.Невозможно передать экземпляр singleton в нескольких банках, запущенных на одной машине
public class MyProducer implements ProducerInterface{
private static KafkaProducer<String, byte[]> producer; // this variable should be shared among all jars.....
private MyProducer() {
logger.warn("Producer is called now.........");
setProducerConfigurations();
}
public static Producer getInstance(){
return SingletonProducer.INSTANCE;
}
private static class SingletonProducer{
private static final MyProducer INSTANCE = new MyProducer();
}
}
Теперь классы, которые используют есть такой код:
public class MyProcessThread extends ProcessThread {
public static ProducerInterface producer;
@Override
public void run() {
if(producer==null){
producer= MyProducer .getInstance();
}
}
}
Вы определяете, сколько JVM запущено. Каждый раз, когда вы начинаете новый процесс, у вас есть новая копия классов и синглетов. Если вы хотите, чтобы они обменивались объектами, запустите их все в одной JVM. –