java - 如何在 Google App Engine 中创建和托管 SOAP 网络服务?
问题描述
是否可以使用 Java 在 Google App Engine 中创建和托管 SOAP Web 服务?
我一直在查看官方 GAE 文档和互联网,但找不到有关它的信息或说明。
如果可能,要在 pom.xml 中添加哪些库以及应用程序的配置说明(针对 web.xml 和 appengine-web.xml)?
解决方案
简短的回答是肯定的。主要要了解的是AppEngine Java 环境使用 Jetty HTTP/servlet 容器。从那里,您可以按照 Metro用户指南将 Web 服务添加到您的站点/应用程序。Metro 是 JAX-WS 实现。这是我在本地开发环境中运行的 GuessBook 示例网站中添加 SOAP Web 服务的操作——我有点懒,不想从头开始:
将 Metro 依赖项添加到您的 POM 文件中:
<dependency> <groupId>org.glassfish.metro</groupId> <artifactId>webservices-rt</artifactId> <version>2.3</version> </dependency>
创建一个标准的 SOAP Web 服务类来处理传入的 Web 服务调用。例如:
package com.jh.guessbook; import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; @WebService(serviceName = "SOAPHelloWorld") public class SOAPHelloWorld { /** * This is a sample web service operation */ @WebMethod(operationName = "hello") public String hello(@WebParam(name = "name") String txt) { return "Hello " + txt + " !"; } }
sun-jaxws.xml
在您的文件夹中创建一个文件WEB-INF
。这是您定义端点的地方。这是我的示例 Web 服务的文件:<?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> <endpoint name="SOAPHelloWorld" implementation="com.jh.guessbook.SOAPHelloWorld" url-pattern="/soapws"/> </endpoints>
最后但同样重要的是,在
web.xml
. 这是我添加到我的web.xml
:<listener> <listener-class> com.sun.xml.ws.transport.http.servlet.WSServletContextListener </listener-class> </listener> <servlet> <servlet-name>SOAPHelloWorld</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SOAPHelloWorld</servlet-name> <url-pattern>/soapws</url-pattern> </servlet-mapping>
您可以通过使用 浏览端点来获取 WSDL 定义?wsdl
。在我的情况下,再次在本地运行,URL 是http://localhost:8080/soapws?wsdl
.
推荐阅读
- performance - 停止应用程序的所有内存访问
- reactjs - 目录 react-app 包含可能发生冲突的文件:package.json
- javascript - 如何使用 JavaScript 动态调整 SVG 中文本元素的高度和宽度
- python - 在熊猫中合并2个xlsx文件
- node.js - 如何在 Windows 上更新 npm、节点版本?
- c# - 在 VSTS Web 测试循环中添加延迟/等待时间
- android - 迁移到 androidx 后无法解决 mutidex 问题
- typescript - 是否可以让 Knockout 无容器控制流语法在 Typescript 中工作?Typescript 正在剥离 HTML 中的注释绑定
- c - 如何正确初始化作为 ANSI-C 中 RPC 自动生成结构字段的字符串
- javascript - 在反应日期选择器中显示突出显示的日期