jsonrpc4j在spring中的映射不起作用

时间:2011-05-26 09:12:43

标签: spring json-rpc

我正在尝试使用jsonrpc4j json-rpc库。不幸的是它没有按预期工作...... 实际上我的服务根本没有映射。这是我的一些servlet-context.xml,我正在使用AnnotationMethodHandlerAdapter(也许这就是问题?):

<bean id="assistenzaJsonService"
        class="it.jsoftware.jacciseweb.assistenza.jsonrpcservices.AssistenzaJSonServiceImpl"></bean>

    <bean name="/AssistenzaServices.json" class="com.googlecode.jsonrpc4j.spring.JsonServiceExporter">
        <property name="service" ref="assistenzaJsonService" />
        <property name="serviceInterface"
            value="it.jsoftware.jacciseweb.assistenza.jsonrpcservices.AssistenzaJSonService" />
    </bean>

应用程序映射到hostname.com/Appname,如果我尝试hostname.com/Appname/AssistenzaServices.json,我会得到404.

线索?

2 个答案:

答案 0 :(得分:0)

您无法直接点击AssistenzaServices.json。如果你这样做,肯定会得到 404 。 您缺少 JSONrpc-spring 流程。

您不会在浏览器中点击AssistenzaServices.json,而是在配置时点击AssistenzaServices.html或类似的内容。点击它之后,映射到.js的java类和dojo AssistenzaServices.html文件将会运行。 Dojo .js文件serviceHandler将使用AssistenzaServices.json映射一个类来获取要在AssistenzaServices.html上显示的结果。

答案 1 :(得分:0)

jsonrpc4j主页上的示例假定您使用“BeanNameUrlHandlerMapping”。 我使用了“SimpleUrlHandlerMapping”,它给了我一个404.

我通过将其添加到servlet.xml

解决了这个问题
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

它使用以下代码(接口配置为gotch4):

<script type="text/javascript">
        dojo.require("dojox.rpc.Service");
        dojo.require("dojox.rpc.JsonRPC");

        service = new dojox.rpc.Service({
            envelope : "JSON-RPC-1.0",
            transport : "POST",
            target : "http://localhost:8080/ajax/json/UserService.json",
            services : {
                helloSir : {
                    parameters : [ {
                        type : "string"
                    } ]
                }
            }
        });

        var response = service.helloSir("victorius");
        console.log(response);
    </script>