actor - How can I use a TypedActor in a Java application? -
i try implement typedactor in java following examples on typed actors (java). i'm struggling. have added akka-actor-1.1-m1.jar, akka-typed-actor-1.1-m1.jar, scala-library.jar wasn't enough. got errors in eclipse added aspectwerkz-2.0.jar , aspectwerkz-core-2.0.jar build path.
i try use typedactor custom constructor.
but error @ compilation:
exception in thread "main" java.lang.nosuchmethoderror: org.codehaus.aspectwerkz.proxy.proxy.newinstance([ljava/lang/class;[ljava/lang/object;zz)ljava/lang/object; @ akka.actor.typedactor$.newinstance(typedactor.scala:596) @ akka.actor.typedactor$.newinstance(typedactor.scala:634) @ akka.actor.typedactor.newinstance(typedactor.scala) @ com.example.actor.actortest.main(actortest.java:12) here code baseactor:
import akka.actor.typedactor; public class baseactor extends typedactor implements baseservice { private string str; private int num; public baseactor(string str, int num) { this.str = str; this.num = num; system.out.println("booted"); } public void testdata(string str, int num) { system.out.println(this.str + " " + this.num); system.out.println(str + " " + num); } } my interface service:
public interface baseservice { public void testdata(string str, int num); } and test class:
import akka.actor.typedactor; import akka.actor.typedactorfactory; public class actortest { public static void main(string[] args) { baseservice service = typedactor.newinstance(baseservice.class, new typedactorfactory() { public typedactor create() { return new baseactor("somestring", 12); } }); service.testdata("hello", 6); } } in example write:
service service = typedactor.newinstance(classof[service], new typedactorfactory() { public typedactor create() { return new servicewithconstructorargsimpl("somestring", 500l)); }); but don't think classof[service] java, it's looks more scala.
how can implement typedactor custom constructor?
your code correct, far can see. instantiate typedactor in java non default constructor, should use:
baseservice service = typedactor.newinstance(baseservice.class, new typedactorfactory() { public typedactor create() { return new baseactor("somestring", 12); } }); indeed, official doc contains typo.
can try use aspectwerkz-2.2.3? have tried code , work me. difference version of aspectwerkz i'm using.
also, please note these dependencies akka-typed-actor 1.1-m1:
<dependency org="org.codehaus.aspectwerkz" name="aspectwerkz" rev="2.2.3" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> <dependency org="aopalliance" name="aopalliance" rev="1.0" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> <dependency org="org.guiceyfruit" name="guice-all" rev="2.0" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> <dependency org="se.scalablesolutions.akka" name="akka-stm" rev="1.1-m1" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> <dependency org="org.scala-lang" name="scala-library" rev="2.9.0.rc1" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
Comments
Post a Comment