用于 RPC 调用的 Servlet 映射

Posted

技术标签:

【中文标题】用于 RPC 调用的 Servlet 映射【英文标题】:Servlet Mapping for RPC Call 【发布时间】:2013-12-09 10:23:00 【问题描述】:

我对 GWT 编程很陌生,但我已经用 Java 编程了很长时间!

我创建了一个带有 RPC 调用的小应用程序,但它不起作用。

当我点击按钮开始通话时,我只在控制台上收到以下消息:

[WARN] 404 - POST /wps_akt/student (127.0.0.1) 1401 bytes
   Request headers
      Host: 127.0.0.1:8888
      Connection: keep-alive
      Accept: */*
      User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/31.0.1650.63 Safari/537.36
      Accept-Encoding: gzip,deflate,sdch
      Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
      Content-Length: 137
      X-GWT-Module-Base: http://127.0.0.1:8888/wps_akt/
      X-GWT-Permutation: HostedMode
      Origin: http://127.0.0.1:8888
      Content-Type: text/x-gwt-rpc; charset=UTF-8
      Referer: http://127.0.0.1:8888/Wps_akt.html?gwt.codesvr=127.0.0.1:9997
   Response headers
      Content-Type: text/html; charset=iso-8859-1
      Content-Length: 1401

web.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee">



  <!-- Servlets -->
    <servlet>
    <servlet-name>StudentServiceImpl</servlet-name>
    <servlet-class>at.htlpinkafeld.wps.server.StudentServiceImpl</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>StudentServiceImpl</servlet-name>
    <url-pattern>/student</url-pattern>
  </servlet-mapping>


  <!-- Default page to serve -->
  <welcome-file-list>
    <welcome-file>Wps_akt.html</welcome-file>
  </welcome-file-list>

</web-app>

感谢您的帮助 斯蒂芬

【问题讨论】:

【参考方案1】:

@RemoteServiceRelativePath 中的 GWT-RPC 路径相对于 GWT.getModuleBaseURL(),即 GWT 生成 *.nocache.js 和 .cache. 文件的文件夹(该文件夹以您的GWT 模块的名称,或 *.gwt.xml 文件中的 rename-to 属性)。

所以你的&lt;servlet-mapping&gt; 应该使用/wps_akt/student 而不仅仅是/student

如果您想使用/student,那么您必须调整您的@RemoteServiceRelativePath 以读取"../student"(假设GWT 编译器接受它)或显式设置路径(将您的服务转换为ServiceDefTarget 和使用您将 servlet 映射到的 URL 调用 setServiceEntryPoint

【讨论】:

以上是关于用于 RPC 调用的 Servlet 映射的主要内容,如果未能解决你的问题,请参考以下文章

首次创建Servlet和验证登录eclipse

servlet映射路径是啥意思

在 /* 上映射全局前端控制器 servlet 时如何访问静态资源

在 /* 上映射全局前端控制器 servlet 时如何访问静态资源

Servlet:从入门到实战学习---Servlet生命周期

Weblogic 升级到 12c:部署失败,因为 url 映射到多个 servlet