同一服务器上的gwt getModuleBaseURL创建java.lang.UnsatifiedLinkError
我有一个与Spring MVC集成的GWT web应用程序。我有一个工作正常的控制器,它工作正常,经过单元测试,可以接受发布的JSON数据并返回JSON数据 在同一个应用程序中,为了避免任何SOP跨站点域问题,我正在与RequestBuilder进行一次调用,以发布相同的json数据,我希望返回json数据 我创建了一个应该进行调用的基本java类,但我有几个问题。这个正在运行的web应用程序正在Eclipse的Jetty中以托管模式运行。我已经做了大量的研究,研究GWT应该如何通过一个简单的HTP请求调用现有的web服务 我的单元测试的第一个问题是:同一服务器上的gwt getModuleBaseURL创建java.lang.UnsatifiedLinkError,gwt,spring-mvc,xmlhttprequest,Gwt,Spring Mvc,Xmlhttprequest,我有一个与Spring MVC集成的GWT web应用程序。我有一个工作正常的控制器,它工作正常,经过单元测试,可以接受发布的JSON数据并返回JSON数据 在同一个应用程序中,为了避免任何SOP跨站点域问题,我正在与RequestBuilder进行一次调用,以发布相同的json数据,我希望返回json数据 我创建了一个应该进行调用的基本java类,但我有几个问题。这个正在运行的web应用程序正在Eclipse的Jetty中以托管模式运行。我已经做了大量的研究,研究GWT应该如何通过一个简单的H
String baseUrl = GWT.getModuleBaseURL();
不工作,我得到:
java.lang.UnsatisfiedLinkError: com.google.gwt.core.client.impl.Impl.getModuleBaseURL()Ljava/lang/String;
我想我知道正确的URL应该是什么,所以当我正确地硬编码URL并执行以下代码时:
String url = getRootUrl() + "rest/pendingInvoices/searchAndCount";
System.out.println("PendingInvoiceDataSource: getData: url=" + url);
// Send request to server and catch any errors.
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url);
builder.setHeader("Accept", "application/json");
builder.setHeader("Content-type", "application/json");
// builder.setRequestData(requestData);
try
{
System.out.println("PendingInvoiceDataSource: SEND REQUEST: getData: requestData=" + requestData);
Request request = builder.sendRequest(requestData, new RequestCallback()
{
public void onError(Request request, Throwable exception)
{
System.out.println("Couldn't retrieve JSON");
}
@Override
public void onResponseReceived(Request request, Response response)
{
if (200 == response.getStatusCode())
{
// updateTable(JsonUtils.safeEval(response.getText()));
System.out.println("data=" + response.getText());
}
else
{
System.out.println("Couldn't retrieve JSON (" + response.getStatusText() + ")");
}
}
});
}
catch (RequestException e)
{
System.out.println("Couldn't retrieve JSON");
}
我在发送请求时收到此错误:
java.lang.UnsatisfiedLinkError: com.google.gwt.xhr.client.XMLHttpRequest.create()Lcom/google/gwt/xhr/client/XMLHttpRequest;
at com.google.gwt.xhr.client.XMLHttpRequest.create(Native Method)
at com.google.gwt.http.client.RequestBuilder.doSend(RequestBuilder.java:383)
at com.google.gwt.http.client.RequestBuilder.sendRequest(RequestBuilder.java:261)
我认为这可能是一个快速解决方案,或者可能是一些我已经忘记的小问题,所以我将尝试更多的测试,看看能找到什么。GWT中的所有
客户端
都只能在客户端运行:编译到JS或在DevMode中
服务器端只能使用shared
、server
和vm
类
如果您想获取服务器URL,请使用HttpServletRequest
中的适当方法(或者SpringMVC中的任何方法,从您如何标记所使用的问题中可以看出)
如果要从服务器发出HTTP请求,请使用
HttpURLConnection
,或类似的库,甚至。GWT中的所有client
都只在客户端运行:编译到JS或在DevMode中
服务器端只能使用shared
、server
和vm
类
如果您想获取服务器URL,请使用HttpServletRequest
中的适当方法(或者SpringMVC中的任何方法,从您如何标记所使用的问题中可以看出)
如果要从服务器发出HTTP请求,请使用
HttpURLConnection
,或类似的库,甚至。实际上,只有单元测试有问题。一旦我真正尝试运行部署的代码,一切都正常了。为了让单元测试正常工作,我仍然会按照建议尝试h gwtestcase
但是当我运行部署的代码时,一切都正常工作
我还更改了:String baseUrl=GWT.getModuleBaseURL();
这给了我:
http://localhost:8888/MyProject
http://localhost:8888/
To:String baseUrl=GWT.getHostPageBaseURL();
这给了我:
http://localhost:8888/MyProject
http://localhost:8888/
实际上,只有单元测试有问题。一旦我真正尝试运行部署的代码,一切都正常了。为了让单元测试正常工作,我仍然会按照建议尝试h gwtestcase 但是当我运行部署的代码时,一切都正常工作 我还更改了:String baseUrl=GWT.getModuleBaseURL(); 这给了我:
http://localhost:8888/MyProject
http://localhost:8888/
To:String baseUrl=GWT.getHostPageBaseURL();
这给了我:
http://localhost:8888/MyProject
http://localhost:8888/
这一切都成功了。只能从应用程序的客户端访问
GWT
类。请确保不要从别处打电话给它。如果您这样做,您将得到未满足链接错误
异常。确保单元测试类扩展了GWTTestCase
()。GWT
类只能从应用程序的客户端访问。请确保不要从别处打电话给它。如果您这样做,您将得到未满足链接错误
异常。确保您的单元测试类扩展了GWTTestCase
()。我使用了GWT客户机RequestBuilder,它工作得很好,但您是对的,我也可以使用Spring HTTP客户机。问题只是在单元测试中,当我实际部署代码时,它工作得很好;正如@Churro在上面的评论中指出的那样,您当时应该使用GWTTestCase
。我使用了GWT客户端RequestBuilder,它工作得很好,但您是对的,我也可以使用Spring HTTP客户端。问题只是在单元测试中,当我实际部署代码时,它工作得很好;正如@Churro在上面的评论中指出的那样,您当时应该使用GWTTestCase
。