Q - Restlet / Spring - 带有教程示例的NotWritablePropertyException?

时间:2015-11-19 11:14:43

标签: java spring restlet

我正在训练关于组合Restlet / Spring但是有些事我还是不明白......我希望你能帮助我。 事实上,我正在尝试使用Spring with Restlet的Inject dependancies systeme(就像在本教程中一样:http://restlet.com/technical-resources/restlet-framework/guide/2.3/introduction/getting-started/maven-spring)。所以我试着自己做,但那不起作用。我的代码返回此异常:

  

org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/applicationContext.xml]中定义名为'basecampComponent'的bean时出错:   设置bean属性'defaultTarget'时无法解析对bean'basecampAppliction'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建在ServletContext资源[/WEB-INF/applicationContext.xml]中定义名为'basecampAppliction'的bean时出错:   设置属性值时出错;嵌套异常是org.springframework.beans.NotWritablePropertyException:bean类的无效属性“root”[com.mycompany.restlet.basecamp.application.BaseCampApplication]:   Bean属性“root”不可写或具有无效的setter方法。 setter的参数类型是否与getter的返回类型匹配?

所以我正在寻找文件“ApplicationContext.xml”,这是他的内容:

<bean id="basecampComponent" class="org.restlet.ext.spring.SpringComponent">
  <property name="defaultTarget" ref="basecampAppliction" />
</bean>
<bean id="basecampAppliction">class="com.mycompany.restlet.basecamp.application.BaseCampApplication">
  <property name="root" ref="router" />
</bean>
<!--  Define the router -->
<bean name="router" class="org.restlet.ext.spring.SpringBeanRouter" />

有人知道我在哪里可以找到调试方法吗?

顺便说一下,我在Java 1.8.0_60。

感谢您的所有帮助。 本杰明

2 个答案:

答案 0 :(得分:1)

在通过网络查找一些信息之后,我有一个假设我是如何解决这个问题的。

在此链接(Spring & Restlet : 100% XML configuration?)上,他将路由器与属性&#34; inboundroot&#34;绑定在一起。申请。所以我认为这是一个最小的改变(在教程中没有注意到)。事实上,我尝试了存档中提出的项目(没有工作)以及您自己编写教程的方式。这又是两个解决方案。

最终解决方案包括将属性的名称更改为&#34; inboundroot&#34; to&#34; root&#34;。

&#34;永远不要相信tuto&#34;

感谢您抽出时间帮助我。

答案 1 :(得分:0)

我认为root类中没有Application属性。您应该在BaseCampApplication类中添加一个并使用它来配置您的应用程序(请参阅createInboundRoot方法),如下所述:

public class BaseCampApplication extends Application {
    private Restlet root;

    public Restlet createInboundRoot() {
        return root;
    }

    public void setRoot(Restlet root) {
        this.root = root;
    }
}

希望它可以帮到你, 亨利