我创建了两个实现com.day.cq.replication.Preprocessor接口的类(例如MyClass1和MyClass2)。
在两者中,我覆盖preprocess()并添加日志。
当我激活页面时,始终首先打印MyClass1(例如)日志语句。 这是什么原因以及如何控制首先应该选择哪个预处理器类?
我的课程如下:
@Service(Preprocessor.class)
@Component(metatype = true,
label="Class One",
description="Do something")
public class MyClass1 implements Preprocessor {
private static final Logger LOG = LoggerFactory.getLogger(MyClass1.class);
@Reference
private Replicator replicator;
/**
*
*
* @see Preprocessor#preprocess(ReplicationAction, ReplicationOptions)
*/
@Override
public void preprocess(ReplicationAction action, ReplicationOptions options)
throws ReplicationException {
LOG.info("In MyClass1")
}
}
答案 0 :(得分:0)
如果订单对预处理器服务很重要,您会看到其中记录的是JavaDoc,例如6.3 doc does not mention order
我不相信有一种指定顺序的方法,但是,您可能想要打开日托票并让adobe告诉您是否有可能,因为他们有源代码。
您可以尝试并提供服务排名并测试是否有效并告诉我们。
这是您的服务,排名最低:
我基本上添加了注释
@Property
和OSGI服务排名。您也可以将intValue
更改为尽可能高的Integer.MAX_VALUE
,看看是否有效。
import org.osgi.framework.Constants;
@Service(Preprocessor.class)
@Component(metatype = true,
label="Class One",
description="Do something")
@Property(name = Constants.SERVICE_RANKING, intValue = Integer.MIN_VALUE) // < -----------------
public class MyClass1 implements Preprocessor {
private static final Logger LOG = LoggerFactory.getLogger(MyClass1.class);
@Reference
private Replicator replicator;
/**
*
*
* @see Preprocessor#preprocess(ReplicationAction, ReplicationOptions)
*/
@Override
public void preprocess(ReplicationAction action, ReplicationOptions options)
throws ReplicationException {
LOG.info("In MyClass1")
}
}
祝你好运!