I'm running it from a servlet, this is the error:
com.dukascopy.charts.data.datacache.DataCacheException: Cannot create cache directory [/temp/.cache]. File.exists() - [false] File.mkdirs() - [false]
at com.dukascopy.charts.data.datacache.CacheManager.<init>(CacheManager.java:170)
at com.dukascopy.charts.data.datacache.CacheManager.<init>(CacheManager.java:97)
at com.dukascopy.charts.data.datacache.LocalCacheManager.<init>(LocalCacheManager.java:98)
at com.dukascopy.charts.data.datacache.FeedDataProvider.<init>(FeedDataProvider.java:202)
at com.dukascopy.charts.data.datacache.FeedDataProvider.createFeedDataProvider(FeedDataProvider.java:271)
at com.dukascopy.charts.data.datacache.FeedDataProvider.createFeedDataProvider(FeedDataProvider.java:247)
at com.dukascopy.api.impl.connect.DCClientImpl.connect(DCClientImpl.java:258)
at com.dukascopy.api.impl.connect.DCClientImpl.connect(DCClientImpl.java:232)
at ws.Main.startJforex(Main.java:81)
at ws.MiscServlet.init(MiscServlet.java:38)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1235)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1044)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5013)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5310)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:702)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:698)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1119)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1760)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
and the code:
public static void startJforex() throws Exception {
final IClient client = ClientFactory.getDefaultInstance();
client.setSystemListener(new ISystemListener() {
private int lightReconnects = 3;
public void onStart(long processId) {
}
public void onStop(long processId) {
if (client.getStartedStrategies().size() == 0) {
System.exit(0);
}
}
public void onConnect() {
lightReconnects = 3;
}
public void onDisconnect() {
if (lightReconnects > 0) {
client.reconnect();
--lightReconnects;
} else {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
try {
client.connect(jnlpUrl, userName, password);
} catch (Exception e) {
}
}
}
});
client.connect(jnlpUrl, userName, password);
int i = 10; //wait max ten seconds
while (i > 0 && !client.isConnected()) {
Thread.sleep(1000);
i--;
}
if (!client.isConnected()) {
System.exit(1);
}
/*Set<Instrument> instruments = new HashSet<Instrument>();
instruments.add(Instrument.EURUSD);
client.setSubscribedInstruments(instruments);*/
Thread.sleep(5000);
System.out.println("------Strategy starting");
client.startStrategy(new Strategy());
}
public class Strategy implements IStrategy {
private IEngine engine;
private IConsole console;
private IHistory history;
private IContext context;
private IIndicators indicators;
private IUserInterface userInterface;
public void onStart(IContext context) throws JFException {
this.engine = context.getEngine();
this.console = context.getConsole();
this.history = context.getHistory();
this.context = context;
this.indicators = context.getIndicators();
this.userInterface = context.getUserInterface();
System.out.println("------Strategy started");
Set<Instrument> instruments = new HashSet<Instrument>();
instruments.add(Instrument.EURUSD);
context.setSubscribedInstruments(instruments);
}
public void onAccount(IAccount account) throws JFException {
}
public void onMessage(IMessage message) throws JFException {
}
public void onStop() throws JFException {
}
public void onTick(Instrument instrument, ITick tick) throws JFException {
DBObject o=new BasicDBObject("time", tick.getTime())
.append("bid", tick.getBid())
.append("totalBidVolume", tick.getTotalBidVolume())
.append("bids", tick.getBids())
.append("bidVolumes", tick.getBidVolumes())
.append("ask", tick.getAsk())
.append("totalAskVolume", tick.getTotalAskVolume())
.append("asks", tick.getAsks())
.append("askVolumes", tick.getAskVolumes());
WsServlet.broadcast("ticks", o.toString());
}
public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
}
}