无法使RemoteServiceRelativePath和XML工作(GWT) [英] Cannot make RemoteServiceRelativePath and XML work (GWT)

查看:305
本文介绍了无法使RemoteServiceRelativePath和XML工作(GWT)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我认为我的GTW项目的XML文件配置不合理,因为当我尝试联系远程服务时,出现此错误:访问/ myresults / compress时出现问题。原因:NOT_FOUND 。如果有人能帮助我,请在下面找到我的代码的重要部分,我认为它与RemoteServiceRelativePath和我的XML有关。


$ b 更新:当我在web.xml中更改URL-PATTERN的内容时,我仍然使用path / myresults / compress获取完全相同的消息。


$ b

CompressionService.java

  package myProject.client; 
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
/ * RPC服务的客户端存根。 * /
@RemoteServiceRelativePath(compress)
public interface CompressionService extends RemoteService {
String compress(String name)throws IllegalArgumentException;
}

CompressionServiceImpl.java

  package myProject.server; 
导入myProject.client.CompressionService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
/ * RPC服务的服务器端实现。 * /
public class CompressionServiceImpl extends RemoteServiceServlet实现
CompressionService {
public String compress(String input)throws IllegalArgumentException {
String output =aaaa;
返回输出;
}
}

CompressionService.java

  package myProject.client; 
import com.google.gwt.user.client.rpc.AsyncCallback;
/ *< code> CompressService< / code>的异步对象* /
public interface CompressionServiceAsync {
void compress(String input,AsyncCallback< String> callback)
throws IllegalArgumentException;
}

web.xml

 <?xml version =1.0encoding =UTF-8?> 
<!DOCTYPE web-app
PUBLIC - // Sun Microsystems,Inc. //DTD Web Application 2.3 // EN
http://java.sun.com/ DTD /网络app_2_3.dtd>
< web-app>
< servlet>
< servlet-name> compressionService< / servlet-name>
< servlet-class> myProject.server.CompressionServiceImpl< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name> compressionService< / servlet-name>
< url-pattern> / myresults / compress< / url-pattern>
< / servlet-mapping>
< welcome-file-list>
< welcome-file> MyResults.html< / welcome-file>
< / welcome-file-list>
< / web-app>

MyResults.gwt.xml

 <?xml version =1.0encoding =UTF-8?> 
< module rename-to ='myresults'>
<继承了name ='com.google.gwt.user.User'/>
<继承了name ='com.google.gwt.user.theme.clean.Clean'/>
< entry-point class ='myProject.client.MyResults'/>
< source path ='client'/>
< source path ='shared'/>
< / module>

MyResults.java

  private final CompressionServiceAsync compressionService = GWT.create(CompressionService.class); 
compressionService.compress(text,new AsyncCallback< String>(){
public void onFailure(Throwable caught){
//向用户
下载显示RPC错误信息。的setText(caught.getMessage()));
}
public void onSuccess(String result){
download.setText(result);
}
});


解决方案

我想你已经在思考正确的路线。问题似乎是你的 @RemoteServiceRelativePath 和web.xml url-mapping 不一致。



可能将web.xml中的servlet映射更改为以下内容将解决您的问题:

 < servlet-mapping> 
< servlet-name> compressionService< / servlet-name>
< url-pattern> / compress< / url-pattern>
< / servlet-mapping>


I think I have a bad configuration of my XML files for my GTW project because when I try to contact the remote service I get this error: "Problem accessing /myresults/compress. Reason: NOT_FOUND". Please find below the important pieces of my code if anyone can help me, I think it is related to RemoteServiceRelativePath and my XML.

UPDATE: When I change in web.xml the content of URL-PATTERN I still get exactly the same message with path /myresults/compress.

CompressionService.java

package myProject.client;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
/* The client side stub for the RPC service. */
@RemoteServiceRelativePath("compress")
public interface CompressionService extends RemoteService {
    String compress(String name) throws IllegalArgumentException;
}

CompressionServiceImpl.java

package myProject.server;
import myProject.client.CompressionService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
/* The server side implementation of the RPC service. */
public class CompressionServiceImpl extends RemoteServiceServlet implements
        CompressionService {
    public String compress(String input) throws IllegalArgumentException {
        String output = "aaaa";
        return output;
    }
}

CompressionService.java

package myProject.client;
import com.google.gwt.user.client.rpc.AsyncCallback;
/* The async counterpart of <code>CompressService</code> */
public interface CompressionServiceAsync {
    void compress(String input, AsyncCallback<String> callback)
            throws IllegalArgumentException;
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <servlet>
    <servlet-name>compressionService</servlet-name>
    <servlet-class>myProject.server.CompressionServiceImpl</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>compressionService</servlet-name>
    <url-pattern>/myresults/compress</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>MyResults.html</welcome-file>
  </welcome-file-list>
</web-app>

MyResults.gwt.xml

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='myresults'>
  <inherits name='com.google.gwt.user.User'/>
  <inherits name='com.google.gwt.user.theme.clean.Clean'/>
  <entry-point class='myProject.client.MyResults'/>
  <source path='client'/>
  <source path='shared'/>
</module>

MyResults.java

private final CompressionServiceAsync compressionService = GWT.create(CompressionService.class);
compressionService.compress(text, new AsyncCallback<String>() {
              public void onFailure(Throwable caught) {
                // Show the RPC error message to the user
                download.setText(caught.getMessage()));             
              }
              public void onSuccess(String result) {
                download.setText(result);
              }
});

解决方案

I guess you are already thinking on the right lines. The problem seems to be that your @RemoteServiceRelativePath and web.xml url-mapping doesn't agree with each other.

Probably changing servlet-mapping in web.xml to following will fix your problem:

  <servlet-mapping>
    <servlet-name>compressionService</servlet-name>
    <url-pattern>/compress</url-pattern>
  </servlet-mapping>

这篇关于无法使RemoteServiceRelativePath和XML工作(GWT)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆