0

我使用工作灯(版本6.1.0.00-20131126-0630),我已经创建了一个服务器端包一个servlet 服务器/ JAVA/com.myproject.servletIBM Worklight - 如何调用servlet?

@WebServlet(name = "MyServlet", displayName = "MyServlet", urlPatterns = { "/MyServlet/*" }, initParams = { 
    @WebInitParam(name="targetUri", value="http://localhost:8080"), 
    @WebInitParam(name="log", value="false"), 
    @WebInitParam(name=ClientPNames.HANDLE_REDIRECTS, value="false") 
    }, 
    loadOnStartup = 1) 

public class MyServlet extends HttpServlet { 
    private static final long serialVersionUID = 1966243950602823405L; 

    @Override 
    protected void service(HttpServletRequest arg0, HttpServletResponse arg1) 
      throws ServletException, IOException { 
      super.service(arg0, arg1); 

      //TODO: IMPLEMENTATION 
    } 
} 

有什么办法调用我的Servlet?

在许多论坛上,人们称用HTTP适配器调用servlet。我想,当我运行我的worklightserver时,我的servlet由worklight Web容器实例化,所以我认为我没有在适配器过程中实例化Servlet。

但是,为了从Worklight客户端的common/mycall.js文件中调用MyServlet服务方法,需要执行什么步骤?

+0

您还需要提及(在问题中编辑它)您的:Worklight版本,如果您使用任何应用程序服务器(tomcat,was,liberty,...)。 –

+0

Worklight版本:6.1.0.00-20131126-0630 - 应用程序服务器(当前):Worklight Development Server(liberty) – Cisco

+0

我的答案是一样的。 –

回答

1

您不应将该servlet放置在Worklight Server中。

要让您的servlet在Worklight Server中工作,您需要手动编辑web.xml文件,否则服务器将无法识别该servlet并且不会侦听任何传入的请求。

但是,web.xml是.war文件的一部分;在Worklight Studio中的每个构建操作(在Eclipse中,Worklight Server实例都是其中的一部分)中重新生成此文件,因此web.xml也会重新生成,并且您的添加将会丢失。

您需要将此servlet部署到某个Web服务器。

然后,您可以像使用其他HTTP后端系统一样使用HTTP适配器来访问它。 See the documentation for HTTP adapters

+0

对不起,也许我不明白,我没有使用web.xml BUT @WebServlet注释为了取代传统的web.xml – Cisco

+0

它仍然会被构建时由Worklight取代。 Worklight Server不是Web服务器。 –

+0

当你说“你可以通过使用一个HTTP适配器就像任何其他HTTP后端系统一样来达到它”时,你的意思就像这个适配器过程:function testServlet(data){var myServlet = new com.myproject.servlet.MyServlet() ;返回myServlet.service(?,?); }调用servlet方法的方式是什么?在适配器过程中使用HttpClient?谢谢 – Cisco

相关问题