Restfull Webservice Maven Project netbeans



我正在寻找各种方法,试图将restfull Webservice创建的访问我的web服务的请求类型放入一个包含Tomcat、Maven和一些servlet的项目中,但我没有错误启动的东西都找不到资源。我做错了什么?我可能没有配置web.xml?我该怎么办?我在下面放了pom.xml文件和

<dependencies>
    <dependency>
        <groupId>org.glassfish.metro</groupId>
        <artifactId>webservices-rt</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.8.3</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20150729</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>javax.mail-api</artifactId>
        <version>1.5.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.4</version>
    </dependency>
    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.1-901-1.jdbc4</version>
    </dependency>
</dependencies>

这是我的网络服务代码:

@Path("ws")
public class WsUserJson {
    @Context
    private UriInfo context;
    /**
     * Creates a new instance of WsUserJson
     */
    public WsUserJson() {
    }
    /**
     * Retrieves representation of an instance of com.lillonet.testmavenservletws.WsUserJson
     * @return an instance of java.lang.String
     */
    @GET
    @Produces("application/json")
    public String getJson(@QueryParam("name") String nome) {
        //TODO return proper representation object
        return "{"+nome+"}";
    }
    /**
     * PUT method for updating or creating an instance of WsUserJson
     * @param content representation for the resource
     * @return an HTTP response with content of the updated or created resource.
     */
    @PUT
    @Consumes("application/json")
    public void putJson(String content) {
    }
}
<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>

这只是一个带有一堆接口的罐子。没有执行。只有当您计划部署到符合EE的服务器(如Glassfish或Wildfly)时,才应使用该依赖关系。Tomcat不是一个符合EE的服务器。它只是一个Servlet容器。因此,javaee-web-api中使用的任何功能都需要包含实现

所以现在,只要去掉它,就不会使用没有实现的ant类。然后,您需要决定要使用的JAX-RS实现。现在我只想说使用泽西岛。所以只需添加这个依赖

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.22.1</version>
</dependency>

然后您需要在web.xml中配置应用程序。您可以在此处查看更多选项。你基本上想要像这样的东西

<web-app>
    <servlet>
        <servlet-name>MyApplication</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>org.foo.myresources</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyApplication</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
</web-app>

init-param中的param-value是您希望Jersey扫描的包,以获取并注册所有用@Path@Provider注释的类。扫描是递归的,所以如果你的资源分散在不同的包中,你可以列出项目中最根的包。

从这里开始,它应该会起作用。然后,对于JSON/POJO支持,您只需添加以下依赖项

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.22.1</version>
</dependency>

不需要额外的配置。

相关内容

  • 没有找到相关文章

最新更新