我是Scala和BlazeDS的新手。我正在尝试编写一个非常简单的应用程序,其中flex将调用名为getBook的方法,而Scala服务返回Book对象。没有涉及数据库。我所做的就是我正在创建一个新的Book of Book并返回它。
我的问题是我没有在Flex上获得有效的Book对象作为响应。我在这里包含了代码。
Scala Book(scalaDemo.vo.Book.scala)
package scalaDemo.vo
case class Book (id:Long,name:String,authors:String)
Scala服务(scalaDemo.GreetingService.scala)
package scalaDemo
import scalaDemo.vo.Book
class GreetingService {
def sayHello = "Hello, World!"
def getBook (name:String):Book = new Book (10,name,"author")
}
Flex Side Book(vo.Book.as)
package vo
{
[RemoteClass(alias="scalaDemo.vo.Book")]
public class Book
{
public var id:Number;
public var name:String;
public var authors:String;
}
}
GreetingService.as
package services
{
import mx.rpc.AsyncResponder;
import mx.rpc.AsyncToken;
import mx.rpc.remoting.RemoteObject;
public class GreetingService
{
protected var ro : RemoteObject = new RemoteObject ("greetingService");
public function sayHello (responder:AsyncResponder) : void {
var token : AsyncToken = ro.sayHello();
token.addResponder(responder);
}
public function getBook (name:String,responder:AsyncResponder) : void {
var token : AsyncToken = ro.getBook(name);
token.addResponder(responder);
}
}
}
远程-config.xml中
<destination id="greetingService">
<properties>
<source>scalaDemo.GreetingService</source>
<scope>application</scope>
</properties>
</destination>
我已将scala类放在tomcat / webapps / blazeds / WEB-INF / classes下(我正在使用blazeds交钥匙服务器)
请帮帮我。
答案 0 :(得分:2)
确定。这是我出错的地方。我很抱歉BlazeDS。我什么都不责备你。
这就是我在Scala中定义我的Book类的方式(错误的方式)
package scalaDemo.vo
case class Book (id:Long,name:String,authors:String)
对于要由BlazeDS序列化的Scala对象,我们需要确保两件事。
@BeanProperty
var
以下是我在问题中提到的scalaDemo.Book
的正确定义。
package scalaDemo.vo
import scala.reflect.BeanProperty
case class Book (
@BeanProperty
var id:Long,
@BeanProperty
var name:String,
@BeanProperty
var authors:String)
Daniel C. Sorbal感谢您的兴趣。现在我的下一个任务是让Hibernate与Scala交谈。