public class MinaDroolsKieServerExtension implements KieServerExtension {
private static final Logger logger = LoggerFactory.getLogger(MinaDroolsKieServerExtension.class);
public static final String EXTENSION_NAME = "Drools-Mina";
private static final Boolean disabled = Boolean.parseBoolean(System.getProperty("org.kie.server.drools-mina.ext.disabled", "false"));
private static final String MINA_HOST = System.getProperty("org.kie.server.drools-mina.ext.port", "localhost");
private static final int MINA_PORT = Integer.parseInt(System.getProperty("org.kie.server.drools-mina.ext.port", "9123"));
// Taken from dependency on the `Drools` extension:
private KieContainerCommandService batchCommandService;
// Specific to MINA:
private IoAcceptor acceptor;
public boolean isActive() {
return disabled == false;
}
public void init(KieServerImpl kieServer, KieServerRegistry registry) {
KieServerExtension droolsExtension = registry.getServerExtension("Drools");
if (droolsExtension == null) {
logger.warn("No Drools extension available, quitting...");
return;
}
List<Object> droolsServices = droolsExtension.getServices();
for( Object object : droolsServices ) {
// If the given service is null (not configured), continue to the next service:
if (object == null) {
continue;
}
if( KieContainerCommandService.class.isAssignableFrom(object.getClass()) ) {
batchCommandService = (KieContainerCommandService) object;
continue;
}
}
if (batchCommandService != null) {
acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
acceptor.setHandler( new TextBasedIoHandlerAdapter(batchCommandService) );
acceptor.getSessionConfig().setReadBufferSize( 2048 );
acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
try {
acceptor.bind( new InetSocketAddress(MINA_HOST, MINA_PORT) );
logger.info("{} -- Mina server started at {} and port {}", toString(), MINA_HOST, MINA_PORT);
} catch (IOException e) {
logger.error("Unable to start Mina acceptor due to {}", e.getMessage(), e);
}
}
}
public void destroy(KieServerImpl kieServer, KieServerRegistry registry) {
if (acceptor != null) {
acceptor.dispose();
acceptor = null;
}
logger.info("{} -- Mina server stopped", toString());
}
public void createContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters) {
// Empty, already handled by the `Drools` extension
}
public void disposeContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters) {
// Empty, already handled by the `Drools` extension
}
public List<Object> getAppComponents(SupportedTransports type) {
// Nothing for supported transports (REST or JMS)
return Collections.emptyList();
}
public <T> T getAppComponents(Class<T> serviceType) {
return null;
}
public String getImplementedCapability() {
return "BRM-Mina";
}
public List<Object> getServices() {
return Collections.emptyList();
}
public String getExtensionName() {
return EXTENSION_NAME;
}
public Integer getStartOrder() {
return 20;
}
@Override
public String toString() {
return EXTENSION_NAME + " KIE Server extension";
}
}
public class MinaDroolsKieServerExtension implements KieServerExtension {
private static final Logger logger = LoggerFactory.getLogger(MinaDroolsKieServerExtension.class);
public static final String EXTENSION_NAME = "Drools-Mina";
private static final Boolean disabled = Boolean.parseBoolean(System.getProperty("org.kie.server.drools-mina.ext.disabled", "false"));
private static final String MINA_HOST = System.getProperty("org.kie.server.drools-mina.ext.port", "localhost");
private static final int MINA_PORT = Integer.parseInt(System.getProperty("org.kie.server.drools-mina.ext.port", "9123"));
// Taken from dependency on the `Drools` extension:
private KieContainerCommandService batchCommandService;
// Specific to MINA:
private IoAcceptor acceptor;
public boolean isActive() {
return disabled == false;
}
public void init(KieServerImpl kieServer, KieServerRegistry registry) {
KieServerExtension droolsExtension = registry.getServerExtension("Drools");
if (droolsExtension == null) {
logger.warn("No Drools extension available, quitting...");
return;
}
List<Object> droolsServices = droolsExtension.getServices();
for( Object object : droolsServices ) {
// If the given service is null (not configured), continue to the next service:
if (object == null) {
continue;
}
if( KieContainerCommandService.class.isAssignableFrom(object.getClass()) ) {
batchCommandService = (KieContainerCommandService) object;
continue;
}
}
if (batchCommandService != null) {
acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
acceptor.setHandler( new TextBasedIoHandlerAdapter(batchCommandService) );
acceptor.getSessionConfig().setReadBufferSize( 2048 );
acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
try {
acceptor.bind( new InetSocketAddress(MINA_HOST, MINA_PORT) );
logger.info("{} -- Mina server started at {} and port {}", toString(), MINA_HOST, MINA_PORT);
} catch (IOException e) {
logger.error("Unable to start Mina acceptor due to {}", e.getMessage(), e);
}
}
}
public void destroy(KieServerImpl kieServer, KieServerRegistry registry) {
if (acceptor != null) {
acceptor.dispose();
acceptor = null;
}
logger.info("{} -- Mina server stopped", toString());
}
public void createContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters) {
// Empty, already handled by the `Drools` extension
}
public void disposeContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters) {
// Empty, already handled by the `Drools` extension
}
public List<Object> getAppComponents(SupportedTransports type) {
// Nothing for supported transports (REST or JMS)
return Collections.emptyList();
}
public <T> T getAppComponents(Class<T> serviceType) {
return null;
}
public String getImplementedCapability() {
return "BRM-Mina";
}
public List<Object> getServices() {
return Collections.emptyList();
}
public String getExtensionName() {
return EXTENSION_NAME;
}
public Integer getStartOrder() {
return 20;
}
@Override
public String toString() {
return EXTENSION_NAME + " KIE Server extension";
}
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow