Code:
[2011/07/28 16:25:19] [Server]: Loaded 15500item prices.
Loaded all shops.
[2011/07/28 16:25:19] [Server]: Reading mapdata...
[2011/07/28 16:25:19] [Server]: Loaded mapdata.
[2011/07/28 16:25:20] [Server]: Loaded packet handlers.
[2011/07/28 16:25:20] [Server]: Loading item definitions...
[2011/07/28 16:25:20] [Server]: Loaded 11992 item definitions.
[2011/07/28 16:25:20] [Server]: Loading npc definitions...
[2011/07/28 16:25:20] [Server]: Loaded 278 npc definitions.
[2011/07/28 16:25:20] [Server]: Loading world list data...
[2011/07/28 16:25:20] [Server]: Setting up world...
[2011/07/28 16:25:20] [Server]: Loading clans....
[2011/07/28 16:25:20] [Server]: Loaded 14 clans.
[2011/07/28 16:25:21] [Server]: Launching worker thread...
log4j:ERROR Could not create an Appender. Reported error follows.
java.lang.ClassNotFoundException: com.rs2hd.util.log.SLF4JAppender
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.log4j.helpers.Loader.loadClass(Loader.java:179)
at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.ja
va:237)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurat
or.java:171)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfi
gurator.java:184)
at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOM
Configurator.java:502)
at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:4
71)
at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:921)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java
:790)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java
:696)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionCon
verter.java:471)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:125)
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:7
3)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:103)
at org.apache.mina.util.NamePreservingRunnable.<init>(NamePreservingRunn
able.java:32)
at org.apache.mina.transport.socket.nio.SocketAcceptor.startupWorker(Soc
ketAcceptor.java:165)
at org.apache.mina.transport.socket.nio.SocketAcceptor.bind(SocketAccept
or.java:141)
at com.rs2hd.Server.listen(Server.java:101)
at com.rs2hd.Server.<init>(Server.java:87)
at com.rs2hd.Main$1.run(Main.java:36)
at java.lang.Thread.run(Unknown Source)
log4j:ERROR Could not parse url [file:/C:/Users/Turmoil/Desktop/SOURCE/bin/log4j
.xml].
java.lang.NullPointerException
at java.util.Hashtable.put(Unknown Source)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurat
or.java:172)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfi
gurator.java:184)
at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOM
Configurator.java:502)
at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:4
71)
at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:921)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java
:790)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java
:696)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionCon
verter.java:471)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:125)
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:7
3)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:103)
at org.apache.mina.util.NamePreservingRunnable.<init>(NamePreservingRunn
able.java:32)
at org.apache.mina.transport.socket.nio.SocketAcceptor.startupWorker(Soc
ketAcceptor.java:165)
at org.apache.mina.transport.socket.nio.SocketAcceptor.bind(SocketAccept
or.java:141)
at com.rs2hd.Server.listen(Server.java:101)
at com.rs2hd.Server.<init>(Server.java:87)
at com.rs2hd.Main$1.run(Main.java:36)
at java.lang.Thread.run(Unknown Source)
[2011/07/28 16:25:21] [Server]: Listening on port 43594
log4j:WARN No appenders could be found for logger (org.apache.mina.filter.execut
or.ExecutorFilter).
log4j:WARN Please initialize the log4j system properly.
Server.Java
Code:
package com.rs2hd;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.apache.mina.common.IoAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;
import com.rs2hd.event.impl.CleanUpEvent;
import com.rs2hd.io.XStreamPlayerLoader;
import com.rs2hd.model.World;
import com.rs2hd.net.ConnectionHandler;
import com.rs2hd.net.ServerPunishHandler;
import com.rs2hd.util.XStreamUtil;
import com.rs2hd.util.log.Logger;
/**
* The central class of the server.
* @author Graham
*
*/
public final class Server {
public static int updateTime = -1;
/**
* Logger instance.
*/
private Logger logger = Logger.getInstance();
/**
* The game engine: where all the game logic processing takes place.
*/
private GameEngine engine;
/**
* Misc event executor
*/
private static final ScheduledExecutorService miscEvents = Executors.newScheduledThreadPool(1);
/**
* Our game logic
*/
private final ScheduledExecutorService gameLogic = Executors.newScheduledThreadPool(1);
/**
* Our firewall by mystic :)
*/
private static ServerPunishHandler firewall;
/**
* Acceptor.
*/
private IoAcceptor acceptor;
/**
* Connection handler.
*/
private ConnectionHandler connectionHandler;
/**
* Create this server.
* @throws Exception
*/
public Server() throws Exception {
logger.info("Launching Rs2hd");
engine = new GameEngine(this);
logger.info("Setting up world...");
World.getWorld().setEngine(engine);
logger.info("Launching worker thread...");
engine.setWorkerThread(new WorkerThread(new XStreamPlayerLoader()));
engine.newThread("WorkerThread", engine.getWorkerThread());
engine.newThread("VoteManager", new VoteManager());
acceptor = new SocketAcceptor();
try {
firewall = (ServerPunishHandler) XStreamUtil.getXStream().fromXML(new FileInputStream("data/text/punishments.xml"));
} catch(Exception e) {
firewall = new ServerPunishHandler();
}
firewall.set();
connectionHandler = new ConnectionHandler(engine);
miscEvents.scheduleAtFixedRate(new CleanUpEvent(), 10, 10, TimeUnit.SECONDS);
listen(Main.port);
}
/**
* Start listening on the specified port.
* @param port
* @throws IOException
* @throws IOException
*/
public void listen(int port) throws IOException {
SocketAcceptorConfig sac = new SocketAcceptorConfig();
sac.getSessionConfig().setTcpNoDelay(false);
sac.setReuseAddress(true);
sac.setBacklog(100);
acceptor.bind(new InetSocketAddress(port), connectionHandler, sac);
logger.info("Listening on port " + port);
}
/**
* Get the game engine.
* @return
*/
public GameEngine getEngine() {
return engine;
}
public static ServerPunishHandler getFirewall() {
return firewall;
}
public static void reloadFirewall() {
try {
ServerPunishHandler firewall = (ServerPunishHandler) XStreamUtil.getXStream().fromXML(new FileInputStream("data/text/punishments.xml"));
if(firewall != null) {
Server.firewall = firewall;
}
} catch(Exception e) {
return;
}
}
public void submit(final Runnable task) {
gameLogic.submit(new Runnable() {
public void run() {
try {
task.run();
} catch(Exception e) {
} catch(Throwable t) {
}
}
});
}
public void scheduleEvent(final Runnable runnable, long delay, TimeUnit unit) {
gameLogic.schedule(new Runnable() {
@Override
public void run() {
try {
runnable.run();
} catch(Exception e) {
} catch(Throwable t) {
}
}
}, delay, unit);
}
}