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