从不同的服务器调用restful服务

时间:2013-01-17 10:57:17

标签: spring restful-url

大家好我正在使用spring3.0 restful webservice.i能够在我从同一台服务器(即我的weblogic服务器)调用方法时调用我的方法。但是如果我想消费\命中相同的方法从另一台服务器(即我的jboss服务器)然后它没有击中我在weblogic服务器上的rest方法。

在下面的代码中,如果我在weblogic jsp页面中编写此代码并调用它返回正确的值,我可以在我的网页上显示相同的内容。但是如果我将相同的代码复制到JBOSS服务器中的jsp(我访问我的休息服务的不同项目)然后它没有达到我的方法。     ---------------------------------------

$.ajax({
    url: "http://test.abc.org:7001/SpringRestService/restful/products/ALL/ALL/ALL/ALL.json",
    type: "GET",
    processdata: true,
    dataType: "json",
    contentType: "application/json;",
    beforeSend: function () { },
    headers : 
    {
        "Content-Type"  : "application/json",
        "Accept" : "application/json",
        "Access-Control-Allow-Origin":"http://its-ims002.neahq.nearoot.org:7001/"
    },
    success: function (data) 
    {             
            bindEvent.loadGridData(data);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) 
    {
        try 
        {
            alert(JSON.stringify(XMLHttpRequest) + "\n" + textStatus + "\n" + errorThrown);
        }
        catch (ex) { alert("Exception occured.. "); }
        finally { }
    }
});

下面是我保存在我的weblogic服务器中的java代码,我必须使用我的ajax调用从jboss服务器命中。

---------------------------------



@Controller
public class HelloWorldController1 {

@RequestMapping(value = "/products/{userName}/{year}/{status}/{stateId}", method = RequestMethod.GET,consumes="application/text")
    public ModelAndView getTextFromURL(@PathVariable("userName") String userName, @PathVariable("year") String year,
            @PathVariable("status") String status, @PathVariable("stateId") String stateId) {
        List<Abc> list= new ArrayList<Abc>();

        list= service.products(userName, year, status, stateId);

        ProductList productList = new ProductList (list);   

        ModelAndView mav = new ModelAndView();
        mav.setViewName("index1");
        mav.addObject("list", productList );

        return mav; 

    }

}

1 个答案:

答案 0 :(得分:0)

即使您为其他(jboss)服务器指定了“Access-Control-Allow-Origin”,浏览器也可能不允许这样做,因为这违反了“同一来源政策”

如果您的服务返回json,您可以通过使用脚本实用程序(如“dojo.io.script”)作为json或javascript不受“相同原始策略”的影响来轻松完成此操作。

如果它不是json,除了“dojo.io.iframe”之外可能没有任何其他选项,如果这适合你。希望这会有所帮助...

编辑:我看到你的服务返回JSON,你尝试过使用dojo.io.script吗?或者您的JS框架具有的任何其他类似实用程序。