weblogic集群中的Singleton服务正在注册,但未调用activate方法



我正在一个专业的多模块EAR项目中用EBJ 3.1在weblogic 12.2.1.2中实现一个单例服务。

我的singleton服务正在集群中注册。

这是来自注册节点的日志:

<BEA-000189> <The Singleton Service Appscoped_Singleton_Service is now active on this server.>

这是来自另一个节点:

<BEA-003130> <Appscoped_Singleton_Service successfully activated on server iss3.> 

singleton服务正在实现接口weblogic.cluster.singleton.SingletonService,但当节点启动或关闭时,不会调用方法activate

deactivate我读了一些关于版本化的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();
}
}
}

谢谢你抽出时间。

我现在在我的src\main\application\META-INF\weblogic application.xml中使用了这个

<wls:singleton-service>
<wls:class-name>com.test.MySingletonServiceClass</wls:class-name>
<wls:name>Appscoped_Singleton_Service</wls:name>
</wls:singleton-service>

相关内容

最新更新