BlazeDS没有将Scala类转换为AMF

BlazeDS没有将Scala类转换为AMF,scala,blazeds,Scala,Blazeds,我是Scala和BlazeDS的新手。我正在尝试编写一个非常简单的应用程序,其中flex将调用一个名为getBook的方法,Scala服务将返回一个Book对象。没有涉及数据库。我所做的就是创建一个新的Book实例并返回它 我的问题是在Flex上没有得到有效的Book对象作为响应。我在这里包括代码 ScalaBook(scalaDemo.vo.Book.Scala) Scala服务(scalaDemo.GreetingService.Scala) 柔性侧边书本(vo.Book.as) 欢迎服务

我是Scala和BlazeDS的新手。我正在尝试编写一个非常简单的应用程序,其中flex将调用一个名为getBook的方法,Scala服务将返回一个Book对象。没有涉及数据库。我所做的就是创建一个新的Book实例并返回它

我的问题是在Flex上没有得到有效的Book对象作为响应。我在这里包括代码

ScalaBook(scalaDemo.vo.Book.Scala)

Scala服务(scalaDemo.GreetingService.Scala)

柔性侧边书本(vo.Book.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);
        }

    }
}
remoting-config.xml

<destination id="greetingService">
    <properties>
        <source>scalaDemo.GreetingService</source>
        <scope>application</scope>
    </properties>
</destination>

欢迎服务
应用
我已经将scala类放在tomcat/webapps/blazeds/WEB-INF/classes下(我使用的是blazeds交钥匙服务器)


请帮帮我。好的。这就是我错的地方。对不起,布莱兹。我无缘无故地责备你

这就是我在Scala中定义Book类的方式(错误的方式)

对于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对话。

你得到了什么?请提供有关尝试运行时发生的情况的详细信息。它会发回一个id=Nan、authors=Null、name=Null的vo.Book对象
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);
        }

    }
}
<destination id="greetingService">
    <properties>
        <source>scalaDemo.GreetingService</source>
        <scope>application</scope>
    </properties>
</destination>
package scalaDemo.vo
case class Book (id:Long,name:String,authors:String) 
package scalaDemo.vo
import scala.reflect.BeanProperty

case class Book (
    @BeanProperty
    var id:Long,
    @BeanProperty
    var name:String,
    @BeanProperty
    var authors:String)