- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 maven 插件生成 WADL。项目构建和服务工作。这是带有插件的 POM 部分:
<plugin>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>maven-wadl-plugin</artifactId>
<version>1.19.2</version>
<executions>
<execution>
<id>generate</id>
<goals>
<goal>generate</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<wadlFile>${basedir}/src/main/docs/ThingREST.wadl</wadlFile>
<formatWadlFile>true</formatWadlFile>
<baseUri>http://localhost:8080/ThingREST</baseUri>
<packagesResourceConfig>
<param>samp.rest.ws.controller</param>
</packagesResourceConfig>
<wadlGenerators>
<wadlGeneratorDescription>
<className>com.sun.jersey.server.wadl.generators.WadlGeneratorApplicationDoc
</className>
<properties>
<property>
<name>applicationDocsFile</name>
<value>${basedir}/src/main/docs/xml/app-wadl-doc.xml</value>
</property>
</properties>
</wadlGeneratorDescription>
<wadlGeneratorDescription>
<className>com.sun.jersey.server.wadl.generators.WadlGeneratorGrammarsSupport
</className>
<properties>
<property>
<name>grammarsFile</name>
<value>${basedir}/src/main/docs/xml/app-wadl-grammar.xml</value>
</property>
</properties>
</wadlGeneratorDescription>
</wadlGenerators>
</configuration>
</plugin>
applicationDocFile 和 grammarFile 存在,但它们不包含任何重要信息。我不确定要包括什么。
这是 Controller :
package samp.rest.ws.controller;
import java.util.List;
import samp.rest.ws.ThingDB;
import samp.rest.ws.vo.Thing;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
*
* @author Grayson
*/
@RestController
public class ThingController {
@RequestMapping(value = "/things", method = RequestMethod.GET, headers = "Accept=application/json") //produces = "application/json")
public List<Thing> getThings() {
return ThingDB.getThings();
}
@RequestMapping(value = "/thing/{id}", method = RequestMethod.GET, headers = "Accept=application/json")
public Thing getThingById(@PathVariable int id) {
return ThingDB.getThing(id);
}
@RequestMapping(value = "/thingy/{id}", method = RequestMethod.GET)
public String getThingy(@PathVariable int id) {
return ThingDB.getThing(id).toString();
}
@RequestMapping(value = "/addthing", method = RequestMethod.PUT) //, headers = "Accept=application/json")
public void addThing(@RequestBody Thing thing) {
ThingDB.addThing(thing);
List<Thing> lt = ThingDB.getThings();
for (Thing t : lt) {
System.out.println(" Post add: " + t.toString());
}
}
}
最后,这是生成的 WADL:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc
jersey:generatedBy="Jersey: 1.19.2 08/25/2016 12:00 AM"
xmlns:jersey="http://jersey.java.net/"/>
<doc
title="Maven Spring REST Sample WADL"
xml:lang="en"><![CDATA[
This is the Web Application Description Language (WADL) for
a Maven Spring REST Service. This service is intended to serve as
a workign model/sample.
]]></doc>
<grammars/>
<resources base="http://localhost:8080/ThingREST"/>
</application>
我期望 WADL 包含可用的服务调用并识别输入类型。显然,我不明白这一点。
我到处搜索示例和文档以使用此插件。任何和所有帮助将不胜感激。遗憾的是,现有的文档/示例似乎已经过时了。
提前致谢。
最佳答案
不幸的是,这个插件不支持 Spring REST Controller 。它只会处理用 @Path 和其他 JAX-RS 注释注释的类。没有其他插件可以满足您的需求。您有两个选择:
1) 重写您的 Controller 以使用 JAX-RS。例如,我将您的 Controller 更改为以下内容:
package samp.rest.ws.controller;
import java.util.List;
import samp.rest.ws.ThingDB;
import samp.rest.ws.vo.Thing;
import javax.ws.rs.*;
@Path("/thing")
public class ThingController {
@GET
@Path(value = "/things")
@Produces("application/json")
public List<Thing> getThings() {
return ThingDB.getThings();
}
@GET
@Path(value = "/thing/{id}")
@Produces("application/json")
public Thing getThingById(@PathParam("id") int id) {
return ThingDB.getThing(id);
}
@GET
@Path(value = "/thingy/{id}")
public String getThingy(@PathParam("id") int id) {
return ThingDB.getThing(id).toString();
}
@PUT
@Path(value = "/addthing")
@Produces("application/json")
public void addThing(Thing thing) {
ThingDB.addThing(thing);
List<Thing> lt = ThingDB.getThings();
for (Thing t : lt) {
System.out.println(" Post add: " + t.toString());
}
}
}
然后插件生成这个 WADL 文件:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc jersey:generatedBy="Jersey: 1.19.2 08/25/2016 12:00 AM" xmlns:jersey="http://jersey.java.net/"/>
<doc title="A message in the WADL" xml:lang="en"><![CDATA[This is the Web Application Description Language (WADL) for
a Maven Spring REST Service. This service is intended to serve as
a workign model/sample.]]></doc>
<grammars>
<include href="xsd0.xsd">
<doc/>
</include>
</grammars>
<resources base="http://localhost:8080/ThingREST">
<resource path="/thing">
<resource path="/things">
<method id="getThings" name="GET">
<response>
<representation mediaType="application/json"/>
</response>
</method>
</resource>
<resource path="/addthing">
<method id="addThing" name="PUT">
<request>
<representation mediaType="*/*"/>
</request>
</method>
</resource>
<resource path="/thing/{id}">
<param name="id" style="template" type="xs:int" xmlns:xs="http://www.w3.org/2001/XMLSchema"/>
<method id="getThingById" name="GET">
<response>
<representation mediaType="application/json"/>
</response>
</method>
</resource>
<resource path="/thingy/{id}">
<param name="id" style="template" type="xs:int" xmlns:xs="http://www.w3.org/2001/XMLSchema"/>
<method id="getThingy" name="GET">
<response>
<representation mediaType="*/*"/>
</response>
</method>
</resource>
</resource>
</resources>
</application>
2) 编写您自己的支持 Spring REST Controller 的 Maven WADL 插件。作为引用,您可以以网络服务的形式查看此生成器:
https://javattitude.com/2014/05/26/wadl-generator-for-spring-rest/
以及Maven WADL插件的源码:
https://github.com/jersey/jersey-1.x/tree/master/contribs/maven-wadl-plugin
关于java - Maven WADL 插件没有生成可用的 WADL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39859814/
如何检测当前网络中计算机是否已连接/可用。 当然,它有多种用途,但我主要关心的是我的应用程序使用位于特定计算机中的资源,如果这些资源不可用,它甚至不会尝试连接,而是使用本地资源。 最佳答案 您可以尝试
雅虎建议load scripts at the bottom of an HTML pages出于性能原因。我使用遵守规则的 HTML5 Boilerplate。 这种方法的问题是 jQuery 也是
我有一个场景,我需要只向管理员而不是普通用户展示一个组件。 说, // This component should be rendered for public users.
我有一个数组,比方说 ["a","b","c"],我想把它变成一个对象,它以数组值作为键和一个默认值我可以设置。因此,如果默认值为 true,我希望我的输出为 {a:true, b:true, c:t
我假设在函数中创建一个新的 PS-Drive 会使该驱动器只能在该函数中访问。 如何通过从该函数可访问的 MAIN 调用函数来创建 PS 驱动器? $temproraryPSDriveName =
您会推荐哪些 .net 控制库作为企业必备的? 可以免费/非免费 至少应该包含一个真正强大的Datagrid Ajax 功能 有没有可用的比较? 最佳答案 我用过 Telerik ASP.NET控制之
假设我有一些像这样的 html: Hello World Javascript代码: var fooBar = document.getElementById('fooBar'); fooBar.
开始实现 camera plugin 时出现以下错误在我的 flutter 应用程序上: [VERBOSE-2:dart_error.cc(16)] Unhandled exception:
我想知道应该在哪里正确放置 countA,因为我希望将计数添加到所做的每个按钮中。开头的“count”变量用于制作新按钮,“countA”是我试图声明的计数,但它无法编译。这是我的代码片段:我的问题再
在python帮助文档中我经常看到带有函数名和命名参数的签名行,然后你会看到**kwarg(关键字参数)。 list? 打印到帮助文档字符串: Init signature: list(self, /
我是 UWP 的新手,想知道“Flyout”、“ContextFlyout”和“Popup”之间的区别。另外,我想知道“AppBar”和“CommandBar”之间的区别。我相信这些是容纳菜单或菜单项
我想显示可用的 Wifi 设备列表。这是我的代码,我不明白这里有什么错误: wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); i
这是我的代码: Random = function(name) { this.name = name; this.addSomething = function(a, b) {
我希望我的按钮持续动画直到用户触摸它,这是代码 func animate() { UIView.animateWithDuration(1, animations: { () -> Void
我正在为我正在参加的类(class)制作一个 HTTP 服务器作为项目,一周来我一直在尝试寻找解决方案。我有一个 DataInputStream,我需要等待客户端向我发送 http 请求,由于连接保持
我想创建一个 bash 脚本来检查我的 Linux 服务器中的哪些端口已关闭且未在特定范围(端口范围 (3000-3010))中使用。 打印输出只需1个端口,如果将输出保存为变量或保存在同一个文件中,
我写了一个我认为是最小的自定义设备来测试我对 QOM 和 QEMU 的总体理解。以下是省略注释的相关代码。不幸的是,当我启动 guest 并将我的设备名称作为命令行参数传递时,它无法找到我的设备并退出
调用Opencv函数时,通常会提供一个常量给函数调用,如: im_hsv = cv2.cvtColor(im, cv2.COLOR_BGR2HSV) 虽然我找不到对所有可用常量的引用。 Opencv
C++ 于 1998 年正式标准化,但我们能在多久以前找到一个名为 string 的类,它看起来像 C++2003 中的 std::string预标准 C++ 实现? 我问是因为 CString 作为
是否有一个官方的(或可能没有)git 命令列表,--porcelain 选项可用?或者我应该在 the porcelain commands list 中手动查看它们中的每一个吗? ? 我已经设法用谷
我是一名优秀的程序员,十分优秀!