Я реализую однопользовательскую службу в weblogic 12.2.1.2 с EBJ 3.1 в проекте мультимодуля EAR maven.Singleton Service в кластере weblogic регистрирует, но не вызывает метод активации
Моя служба односторонней регистрации регистрируется в кластере.
Это бревно из узла, в котором зарегистрирован:
<BEA-000189> <The Singleton Service Appscoped_Singleton_Service is now active on this server.>
И это от другого узла:
<BEA-003130> <Appscoped_Singleton_Service successfully activated on server iss3.>
Одноэлементный служба реализует интерфейс weblogic.cluster.singleton. SingletonService, но методы активировать и дезактивировать не вызывается, когда узлы запускаются или завершаются.
Я читал кое-что о версированных файлах EAR и MANIFEST, но не понял этого.
мне нужна помощь, чтобы сделать методы активизируют и Деактивировать быть вызваны.
Это мой класс:
import java.io.Serializable;
import javax.inject.Inject;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.test.MyTimerLocal;
import weblogic.cluster.singleton.SingletonService;
public class MySingletonServiceClass implements SingletonService, Serializable, MySingletonServiceInterface {
private static final long serialVersionUID = 3966807367110330202L;
private static final String jndiName = "MySingletonServiceClass";
private int myValue;
@Inject
private MyTimerLocal myTimer;
@Override
public int getMyValue() {
return this.myValue;
}
@Override
public synchronized void setMyValue(final int myValue) {
this.myValue = myValue;
}
@Override
public void activate() {
System.out.println("activate triggered");
Context ic = null;
try {
ic = new InitialContext();
ic.bind(MySingletonServiceClass.jndiName, this);
System.out.println("Object now bound in JNDI at " + MySingletonServiceClass.jndiName);
this.myValue = 5;
final String msg = "###################### MySingletonServiceClass.activate():: Fechamento agendado para " + this.myTimer.agendaExecucao() + " ###############";
System.out.println(msg);
} catch (final NamingException e) {
this.myValue = -1;
e.printStackTrace();
} finally {
try {
if (ic != null) {
ic.close();
}
} catch (final NamingException e) {
e.printStackTrace();
}
}
}
@Override
public void deactivate() {
System.out.println("deactivate triggered");
Context ic = null;
try {
ic = new InitialContext();
ic.unbind(MySingletonServiceClass.jndiName);
System.out.println("Context unbound successfully");
} catch (final NamingException e) {
e.printStackTrace();
}
}
}
Спасибо за ваше время.
Почему вы думаете, что методы не вызываются? Из-за отсутствия выходных данных в журналах? – slwk
Я получил эту работу сейчас с этим в моем ** src \ main \ application \ META-INF \ weblogic-application.xml ** ' com.test .MySingletonServiceClass wls: class-name> Appscoped_Singleton_Service wls: singleton-service> ' –