Reputation: 3070
Question 1: I have created a sample java application using play 2.1.1 with a scheduler to be kicked off when the application is started. I did a play compile and then play start, but i'm getting the below error, please let me know if i'm doing anything wrong here:
(Starting server. Type Ctrl+D to exit logs, the server will remain in background)
Play server process ID is 6160
@6edl861on: Cannot init the Global objectOops, cannot start the server.
at play.api.WithDefaultGlobal$$anonfun$play$api$WithDefaultGlobal$$globalInstance$1.apply(Application.scala:57)
at play.api.WithDefaultGlobal$$anonfun$play$api$WithDefaultGlobal$$globalInstance$1.apply(Application.scala:51)
at play.utils.Threads$.withContextClassLoader(Threads.scala:18)
at play.api.WithDefaultGlobal$class.play$api$WithDefaultGlobal$$globalInstance(Application.scala:50)
at play.api.DefaultApplication.play$api$WithDefaultGlobal$$globalInstance$lzycompute(Application.scala:383)
at play.api.DefaultApplication.play$api$WithDefaultGlobal$$globalInstance(Application.scala:383)
at play.api.WithDefaultGlobal$class.global(Application.scala:66)
at play.api.DefaultApplication.global(Application.scala:383)
at play.api.WithDefaultConfiguration$class.play$api$WithDefaultConfiguration$$fullConfiguration(Application.scala:80)
at play.api.DefaultApplication.play$api$WithDefaultConfiguration$$fullConfiguration$lzycompute(Application.scala:383)
at play.api.DefaultApplication.play$api$WithDefaultConfiguration$$fullConfiguration(Application.scala:383)
at play.api.WithDefaultConfiguration$class.configuration(Application.scala:82)
at play.api.DefaultApplication.configuration(Application.scala:383)
at play.api.Application$class.$init$(Application.scala:268)
at play.api.DefaultApplication.<init>(Application.scala:383)
at play.core.StaticApplication.<init>(ApplicationProvider.scala:52)
at play.core.server.NettyServer$.createServer(NettyServer.scala:228)
at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:259)
at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:258)
at scala.Option.map(Option.scala:145)
at play.core.server.NettyServer$.main(NettyServer.scala:258)
at play.core.server.NettyServer.main(NettyServer.scala)
Caused by: java.lang.RuntimeException: There is no started application
at scala.sys.package$.error(package.scala:27)
at play.api.Play$$anonfun$current$1.apply(Play.scala:46)
at play.api.Play$$anonfun$current$1.apply(Play.scala:46)
at scala.Option.getOrElse(Option.scala:120)
at play.api.Play$.current(Play.scala:46)
at play.api.Play.current(Play.scala)
at play.libs.Akka.system(Akka.java:25)
at Global.<init>(Global.java:27)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at play.api.WithDefaultGlobal$class.play$api$WithDefaultGlobal$$javaGlobal(Application.scala:30)
at play.api.DefaultApplication.play$api$WithDefaultGlobal$$javaGlobal$lzycompute(Application.scala:383)
at play.api.DefaultApplication.play$api$WithDefaultGlobal$$javaGlobal(Application.scala:383)
at play.api.WithDefaultGlobal$$anonfun$play$api$WithDefaultGlobal$$globalInstance$1.apply(Application.scala:52)
Resources:
Global.java - in apps/
public class Global extends GlobalSettings {
private Logger.ALogger log = Logger.of(Global.class);
private ActorRef myActor = Akka.system().actorOf(
new Props(Retreiver.class));
@Override
public void onStart(Application app) {
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
Akka.system()
.scheduler()
.schedule(Duration.create(0, TimeUnit.MILLISECONDS),
Duration.create(10, TimeUnit.SECONDS), myActor, "tick",
Akka.system().dispatcher());
}
}
Retreiver.java:
public class Retreiver extends UntypedActor {
private Logger.ALogger log = Logger.of(TweetsRetreiver.class);
@Override
public void onReceive(Object arg0) throws Exception {
// some code here
}
}
application.conf:
application.global=Global
Question 2: Also, No logs are getting printed either in the console or Application.log file. I have used play.Logger package to do the logging, is this the correct package to be used to log in play 2.1.1? Please provide an example for this.
Thanks.
Upvotes: 2
Views: 1952
Reputation: 3070
Solved. Problem with the line:
private ActorRef myActor = Akka.system().actorOf(
new Props(Retreiver.class));
When i moved this inside the onStart method, it got triggered correctly. Don't know why i can't define this in class level. Need to check.
Upvotes: 3
Reputation: 21564
For the logging question, you have to use the Play's Logger helper :
@Override
public void onStart(Application app) {
play.Logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
...
}
Upvotes: 1