package net.cis.server.main;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.cis.common.model.system.message.SerializerRegistrationInitializer;
import net.cis.server.main.listener.ServerConnectionListener;
import net.cis.server.main.listener.ServerMessageListener;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.xml.DOMConfigurator;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStartedEvent;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.jme3.app.SimpleApplication;
import com.jme3.network.Network;
import com.jme3.network.Server;
import com.jme3.system.JmeContext.Type;
public class ServerMain extends SimpleApplication implements ApplicationListener<ContextStartedEvent> {
private ServerConnectionListener serverConnectionListener;
private ServerMessageListener serverMessageListener;
private int tcpPort;
private int udpPort;
public static void main(String[] args) {
DOMConfigurator.configure(ServerMain.class.getClassLoader().getResource("logging/log4j.xml"));
ApplicationContext appCtx = new ClassPathXmlApplicationContext("classpath*:spring/spring-*.xml");
appCtx.publishEvent(new ContextStartedEvent(appCtx));
}
@Override
public void onApplicationEvent(ContextStartedEvent event) {
// JMonkey-Messages f�r Netzwerkkommunikation registrieren
SerializerRegistrationInitializer.registerClasses();
start(Type.Headless);
}
@Override
public void simpleInitApp() {
try {
Server cisServer = Network.createServer(tcpPort, udpPort);
cisServer.addConnectionListener(serverConnectionListener);
cisServer.addMessageListener(serverMessageListener);
cisServer.start();
LogFactory.getLog(ServerMain.class).info("Server is running...");
} catch (IOException e) {
LogFactory.getLog(ServerMain.class).error("Error while initializing!", e);
System.exit(-1);
}
}
public void setJMonkeyLogLevel(Level level) {
// JMonkey-Logging auf Info+1
Logger.getLogger("").setLevel(level);
}
public void setServerConnectionListener(ServerConnectionListener serverConnectionListener) {
this.serverConnectionListener = serverConnectionListener;
}
public void setServerMessageListener(ServerMessageListener serverMessageListener) {
this.serverMessageListener = serverMessageListener;
}
public void setTcpPort(int tcpPort) {
this.tcpPort = tcpPort;
}
public void setUdpPort(int udpPort) {
this.udpPort = udpPort;
}
}