【问题标题】:Sbb does not start on Mobicents JBoss 2.7.0Sbb 无法在 Mobicents JBoss 2.7.0 上启动
【发布时间】:2016-10-31 09:50:19
【问题描述】:

我正在使用 mobicents-jainslee-2.7.0.FINAL-jboss-5.1.0.GA,并尝试部署简单的 onTimerEvent 服务。 JBoss 正确检测到所有组件,但是当我单击激活时控制台中没有日志。另一方面 onStartedEventSbb 效果很好。

为什么这个 Service 和 Sbb 不是由服务器运行的?

我有一个 TimerSbb.java:

public class TimerSbb implements Sbb {
    private Tracer tracer;
    private SbbContext sbbContext;
    private TimerFacility timerFacility;
    private NullActivityContextInterfaceFactory nullActivityContextFactory;
    private NullActivityFactory nullActivityFactory;

    private final int TIMER_PERIOD_IN_MILISECONDS = 500;

    public void onTimerEvent(TimerEvent timerEvent, ActivityContextInterface activityContextInterface) {
        tracer.info("onTimerEvent");
    }

    public void setSbbContext(SbbContext context) {
        this.sbbContext = context;
        tracer = this.sbbContext.getTracer(getClass().getSimpleName());
        tracer.info("setSbbContext");
        try {
            Context initialContext = new InitialContext();
            timerFacility = (TimerFacility) initialContext.lookup(TimerFacility.JNDI_NAME);
            nullActivityContextFactory = (NullActivityContextInterfaceFactory) initialContext.lookup(NullActivityContextInterfaceFactory.JNDI_NAME);
            nullActivityFactory = (NullActivityFactory) initialContext.lookup(NullActivityFactory.JNDI_NAME);
        } catch (NamingException e) {
            tracer.warning("NamingException", e);
        }
        setupTimer();
    }

    private void setupTimer() {
        ActivityContextInterface nullActivityContext = nullActivityContextFactory.getActivityContextInterface(nullActivityFactory.createNullActivity());
        timerFacility.setTimer(nullActivityContext, null, System.currentTimeMillis(), TIMER_PERIOD_IN_MILISECONDS, 0, new TimerOptions());
        nullActivityContext.attach(sbbContext.getSbbLocalObject());
        tracer.info("Timer set up. Period = " + TIMER_PERIOD_IN_MILISECONDS + " ms");
    }

    public void unsetSbbContext() {
        tracer.info("unsetSbbContext");
    }

    public void sbbCreate() throws CreateException {
        tracer.info("sbbCreate");
    }

    public void sbbPostCreate() throws CreateException {
        tracer.info("sbbPostCreate");
    }

    public void sbbActivate() {
        tracer.info("sbbActivate");
    }

    public void sbbPassivate() {
        tracer.info("sbbPassivate");
    }

    public void sbbLoad() {
        tracer.info("sbbLoad");
    }

    public void sbbStore() {
        tracer.info("sbbStore");
    }

    public void sbbRemove() {
        tracer.info("sbbRemove");
    }

    public void sbbExceptionThrown(Exception e, Object o, ActivityContextInterface activityContextInterface) {
        tracer.info("sbbExceptionThrown");
    }

    public void sbbRolledBack(RolledBackContext rolledBackContext) {
        tracer.info("sbbRolledBack");
    }

}

sbb-jar.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE sbb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD JAIN SLEE SBB 1.1//EN"
        "http://java.sun.com/dtd/slee-sbb-jar_1_1.dtd">

<sbb-jar>
    <sbb>
        <sbb-name>TimerSbb</sbb-name>
        <sbb-vendor>com.example</sbb-vendor>
        <sbb-version>1.0</sbb-version>
        <sbb-classes>
            <sbb-abstract-class>
                <sbb-abstract-class-name>
                    com.example.slee.TimerSbb
                </sbb-abstract-class-name>
            </sbb-abstract-class>
        </sbb-classes>

        <event event-direction="Receive">
            <event-name>TimerEvent</event-name>
            <event-type-ref>
                <event-type-name>javax.slee.facilities.TimerEvent</event-type-name>
                <event-type-vendor>javax.slee</event-type-vendor>
                <event-type-version>1.0</event-type-version>
            </event-type-ref>
        </event>

    </sbb>
</sbb-jar>        

timer-service.xml:

<service-xml>
<service>
    <service-name>Timer Service</service-name>
    <service-vendor>com.example</service-vendor>
    <service-version>1.0</service-version>
    <root-sbb>
        <sbb-name>TimerSbb</sbb-name>
        <sbb-vendor>com.example</sbb-vendor>
        <sbb-version>1.0</sbb-version>
    </root-sbb>
    <default-priority>0</default-priority>
</service>

可部署单元.xml:

<deployable-unit>
    <jar>lib/timer-sbb-1.0-SNAPSHOT.jar</jar>
    <service-xml>timer-service.xml</service-xml>
</deployable-unit>

我正在用 Maven 构建 jar:Jar 结构是:

example.jar:

 - lib/timer-sbb-1.0-SNAPSHOT.jar
 - timer-service.xml
 - META-INF/deployable-unit.xml

timer-sbb-1.0-SNAPSHOT.jar:
 - com.example.slee.TimerSbb
 - META-INF/sbb-jar.xml

【问题讨论】:

    标签: restcomm mobicents jain-slee


    【解决方案1】:

    这个太旧了,你能用https://github.com/RestComm/jain-slee/releases/latest的最新吗?

    【讨论】:

    • 我知道这一事实,但我使用一些遗留系统:/
    • 社区不再支持此版本,或许您应该联系 Telestax 以获得正式支持
    【解决方案2】:

    问题在于通过 TimerFacility 在 setSbbContext 方法中创建计时器。这可能还为时过早,如果我将方法 setupTimer() 移动到 onServiceStartedEvent() 它就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 2015-09-11
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多