java - JEE 无法运行 JAX-RS WebService 框架应用程序

标签 java maven jakarta-ee jersey jax-rs

我使用的是 Windows、NetBeans 8.0.2、GlassFish 4.1。我无法让示例 JAX-RS 应用程序运行。

这是 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.wld</groupId>
    <artifactId>HelloWebService</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>HelloWebService</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.8</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.metro</groupId>
            <artifactId>webservices-rt</artifactId>
            <version>2.3</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>HelloWebService</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>

和 web.xml:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Restful Web Application</display-name>
    <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>
            com.sun.jersey.spi.container.servlet.ServletContainer
        </servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.wld.rest</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
</web-app>

这是我的控制台输出:

NetBeans: Deploying on GlassFish Server 4.1
    profile mode: false
    debug mode: false
    force redeploy: true
Starting GlassFish Server 4.1
GlassFish Server 4.1 is running.
In-place deployment at C:\Users\tomasz.ducin\Learning\HelloWebService\target\HelloWebService
GlassFish Server 4.1, deploy, null, false
cd C:\Users\tomasz.ducin\Learning\HelloWebService; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_31" cmd /c "\"\"C:\\Program Files\\NetBeans 8.0.2\\java\\maven\\bin\\mvn.bat\" -Dnetbeans.deploy=true -Dmaven.ext.class.path=C:\\Users\\tomasz.ducin\\AppData\\Roaming\\NetBeans\\8.0.2\\maven-nblib\\netbeans-eventspy.jar -Dfile.encoding=UTF-8 package\""
Scanning for projects...

------------------------------------------------------------------------
Building HelloWebService 1.0-SNAPSHOT
------------------------------------------------------------------------

--- maven-resources-plugin:2.5:resources (default-resources) @ HelloWebService ---
[debug] execute contextualize
Using 'UTF-8' encoding to copy filtered resources.
Copying 0 resource

--- maven-compiler-plugin:2.3.2:compile (default-compile) @ HelloWebService ---
Nothing to compile - all classes are up to date

--- maven-resources-plugin:2.5:testResources (default-testResources) @ HelloWebService ---
[debug] execute contextualize
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory C:\Users\tomasz.ducin\Learning\HelloWebService\src\test\resources

--- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ HelloWebService ---
No sources to compile

--- maven-surefire-plugin:2.10:test (default-test) @ HelloWebService ---
Surefire report directory: C:\Users\tomasz.ducin\Learning\HelloWebService\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0


--- maven-war-plugin:2.6:war (default-war) @ HelloWebService ---
Packaging webapp
Assembling webapp [HelloWebService] in [C:\Users\tomasz.ducin\Learning\HelloWebService\target\HelloWebService]
Processing war project
Copying webapp resources [C:\Users\tomasz.ducin\Learning\HelloWebService\src\main\webapp]
Webapp assembled in [60 msecs]
Building war: C:\Users\tomasz.ducin\Learning\HelloWebService\target\HelloWebService.war
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 3.109s
Finished at: Sat May 30 14:53:50 CEST 2015
Final Memory: 11M/245M
------------------------------------------------------------------------
NetBeans: Deploying on GlassFish Server 4.1
    profile mode: false
    debug mode: false
    force redeploy: true
In-place deployment at C:\Users\tomasz.ducin\Learning\HelloWebService\target\HelloWebService
GlassFish Server 4.1, deploy, null, false

可以看到,只有一个java文件。没有资源,没有测试,没有测试资源。无论如何,GLassFish 无法为应用程序提供服务。我一直在网上寻找,但找不到原因。我正在考虑一些与 Windows 相关的事情,例如端口、防火墙或任何其他操作系统的事情。

下面是 glassfish 控制台输出:

Launching GlassFish on Felix platform
maj 30, 2015 2:53:34 PM com.sun.enterprise.glassfish.bootstrap.osgi.BundleProvisioner createBundleProvisioner
INFO: Create bundle provisioner class = class com.sun.enterprise.glassfish.bootstrap.osgi.BundleProvisioner.
maj 30, 2015 2:53:34 PM com.sun.enterprise.glassfish.bootstrap.osgi.BundleProvisioner$DefaultCustomizer getLocations
WARNING: Skipping entry  because it is not an absolute URI.
maj 30, 2015 2:53:34 PM com.sun.enterprise.glassfish.bootstrap.osgi.BundleProvisioner$DefaultCustomizer getLocations
WARNING: Skipping entry  because it is not an absolute URI.
Registered com.sun.enterprise.glassfish.bootstrap.osgi.EmbeddedOSGiGlassFishRuntime@d21e255 in service registry.
Found populator: com.sun.enterprise.v3.server.GFDomainXml
#!## LogManagerService.postConstruct : rootFolder=C:\Program Files\glassfish-4.1\glassfish
#!## LogManagerService.postConstruct : templateDir=C:\Program Files\glassfish-4.1\glassfish\lib\templates
#!## LogManagerService.postConstruct : src=C:\Program Files\glassfish-4.1\glassfish\lib\templates\logging.properties
#!## LogManagerService.postConstruct : dest=C:\Users\tomasz.ducin\AppData\Roaming\NetBeans\8.0.2\config\GF_4.1\domain1\config\logging.properties
Info:   Running GlassFish Version: GlassFish Server Open Source Edition  4.1  (build 13)
Info:   Server log file is using Formatter class: com.sun.enterprise.server.logging.ODLLogFormatter
Info:   Realm [admin-realm] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
Info:   Realm [file] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
Info:   Realm [certificate] of classtype [com.sun.enterprise.security.auth.realm.certificate.CertificateRealm] successfully created.
Info:   Authorization Service has successfully initialized.
Info:   Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry
Info:   Grizzly Framework 2.3.15 started in: 312ms - bound to [/0.0.0.0:8080]
Info:   Grizzly Framework 2.3.15 started in: 0ms - bound to [/0.0.0.0:8181]
Info:   Grizzly Framework 2.3.15 started in: 10ms - bound to [/0.0.0.0:4848]
Info:   Grizzly Framework 2.3.15 started in: 5ms - bound to [/0.0.0.0:3700]
Info:   GlassFish Server Open Source Edition  4.1  (13) startup time : Felix (2 138ms), startup services(1 647ms), total(3 785ms)
Info:   Grizzly Framework 2.3.15 started in: 26ms - bound to [/0.0.0.0:7676]
Info:   Registered com.sun.enterprise.glassfish.bootstrap.osgi.EmbeddedOSGiGlassFishImpl@109d724c as OSGi service registration: org.apache.felix.framework.ServiceRegistrationImpl@4ba89729.
Info:   JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://WAWLT548.global.ad:8686/jndi/rmi://WAWLT548.global.ad:8686/jmxrmi
Info:   HV000001: Hibernate Validator 5.0.0.Final
Info:   Grizzly Framework 2.3.15 started in: 2ms - bound to [/0.0.0.0:8181]
Info:   Grizzly Framework 2.3.15 started in: 13ms - bound to [/0.0.0.0:8080]
Info:   visiting unvisited references
Info:   Java security manager is disabled.
Info:   Entering Security Startup Service.
Info:   Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.
Info:   Security Service(s) started successfully.
Info:   Created HTTP listener http-listener-1 on host/port 0.0.0.0:8080
Info:   Created HTTP listener http-listener-2 on host/port 0.0.0.0:8181
Info:   Created HTTP listener admin-listener on host/port 0.0.0.0:4848
Info:   Created virtual server server
Info:   Created virtual server __asadmin
Info:   Setting JAAS app name glassfish-web
Info:   Virtual server server loaded default web module 
Warning:   Ignore WEB-INF/sun-web.xml in archive /C:/Users/tomasz.ducin/Learning/HelloWebService/target/HelloWebService/, as WLS counterpart runtime xml WEB-INF/glassfish-web.xml is present in the same archive.
Info:   Scanning for root resource and provider classes in the packages:
  com.wld.rest
Info:   Root resource classes found:
  class com.wld.rest.HelloService
Info:   No provider classes found.
Info:   Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM'
Severe:   WebModule[/HelloWebService]StandardWrapper.Throwable
com.sun.jersey.api.container.ContainerException: Unable to create resource
    at com.sun.jersey.server.impl.resource.SingletonFactory$Singleton.init(SingletonFactory.java:139)
    at com.sun.jersey.server.impl.application.WebApplicationImpl$10.f(WebApplicationImpl.java:584)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    [...]
    at com.sun.jersey.server.spi.component.ResourceComponentConstructor.construct(ResourceComponentConstructor.java:179)
    at com.sun.jersey.server.impl.resource.SingletonFactory$Singleton.init(SingletonFactory.java:137)
    ... 74 more
Caused by: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.jersey.server.wadl.WadlGeneratorImpl.createResponse(WadlGeneratorImpl.java:198)
    at com.sun.jersey.server.wadl.WadlBuilder.generateResponse(WadlBuilder.java:395)
    [...]
    at com.sun.jersey.server.impl.wadl.WadlApplicationContextImpl.getApplication(WadlApplicationContextImpl.java:79)
    at com.sun.jersey.server.impl.wadl.WadlResource.<init>(WadlResource.java:77)
    ... 81 more

Severe:   WebModule[/HelloWebService]Servlet /HelloWebService threw load() exception
java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.jersey.server.wadl.WadlGeneratorImpl.createResponse(WadlGeneratorImpl.java:198)
    at com.sun.jersey.server.wadl.WadlBuilder.generateResponse(WadlBuilder.java:395)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

Severe:   Startup of context /HelloWebService failed due to previous errors
Severe:   ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5954)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5712)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5946)
    ... 49 more
Caused by: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.jersey.server.wadl.WadlGeneratorImpl.createResponse(WadlGeneratorImpl.java:198)
    at com.sun.jersey.server.wadl.WadlBuilder.generateResponse(WadlBuilder.java:395)
    [...]
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1382)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5704)
    ... 50 more

Warning:   java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1044)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

Severe:   Exception while invoking class com.sun.enterprise.web.WebApplication start method
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:168)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

Severe:   Exception during lifecycle processing
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:168)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

Severe:   Exception while loading the app
Severe:   Undeployment failed for context /HelloWebService
Severe:   Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
Info:   visiting unvisited references
Warning:   Ignore WEB-INF/sun-web.xml in archive /C:/Users/tomasz.ducin/Learning/HelloWebService/target/HelloWebService/, as WLS counterpart runtime xml WEB-INF/glassfish-web.xml is present in the same archive.
Info:   Scanning for root resource and provider classes in the packages:
  com.wld.rest
Info:   Root resource classes found:
  class com.wld.rest.HelloService
Info:   No provider classes found.
Info:   Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM'
Severe:   WebModule[/HelloWebService]StandardWrapper.Throwable
com.sun.jersey.api.container.ContainerException: Unable to create resource
    at com.sun.jersey.server.impl.resource.SingletonFactory$Singleton.init(SingletonFactory.java:139)
    at com.sun.jersey.server.impl.application.WebApplicationImpl$10.f(WebApplicationImpl.java:584)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    at com.sun.jersey.server.spi.component.ResourceComponentConstructor._construct(ResourceComponentConstructor.java:198)
    at com.sun.jersey.server.spi.component.ResourceComponentConstructor.construct(ResourceComponentConstructor.java:179)
    at com.sun.jersey.server.impl.resource.SingletonFactory$Singleton.init(SingletonFactory.java:137)
    ... 74 more
Caused by: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.jersey.server.wadl.WadlGeneratorImpl.createResponse(WadlGeneratorImpl.java:198)
    at com.sun.jersey.server.wadl.WadlBuilder.generateResponse(WadlBuilder.java:395)
    at com.sun.jersey.server.wadl.WadlBuilder.generateMethod(WadlBuilder.java:164)
    at com.sun.jersey.server.wadl.WadlBuilder.generateResource(WadlBuilder.java:331)
    at com.sun.jersey.server.wadl.WadlBuilder.generateResource(WadlBuilder.java:269)
    at com.sun.jersey.server.wadl.WadlBuilder.generate(WadlBuilder.java:105)
    at com.sun.jersey.server.impl.wadl.WadlApplicationContextImpl.getApplication(WadlApplicationContextImpl.java:79)
    at com.sun.jersey.server.impl.wadl.WadlResource.<init>(WadlResource.java:77)
    ... 81 more

Severe:   WebModule[/HelloWebService]Servlet /HelloWebService threw load() exception
java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.jersey.server.wadl.WadlGeneratorImpl.createResponse(WadlGeneratorImpl.java:198)
    at com.sun.jersey.server.wadl.WadlBuilder.generateResponse(WadlBuilder.java:395)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

Severe:   Startup of context /HelloWebService failed due to previous errors
Severe:   ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5954)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5712)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5946)
    ... 49 more
Caused by: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.jersey.server.wadl.WadlGeneratorImpl.createResponse(WadlGeneratorImpl.java:198)
    at com.sun.jersey.server.wadl.WadlBuilder.generateResponse(WadlBuilder.java:395)
    [...]
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1382)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5704)
    ... 50 more

Warning:   java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1044)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

Severe:   Exception while invoking class com.sun.enterprise.web.WebApplication start method
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:168)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

Severe:   Exception during lifecycle processing
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:168)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
    [...]
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

Severe:   Exception while loading the app
Severe:   Undeployment failed for context /HelloWebService
Severe:   Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoSuchMethodError: com.sun.research.ws.wadl.Response.getRepresentationOrFault()Ljava/util/List;

我尝试过多次清理、构建、使用 deps 构建、重新启动 IDE 几次,但都没有效果。不知道该怎么办。

最佳答案

Glassfish 4 使用 Jersey 2.x。您应该相应地更改依赖项和 web.xml 配置。对于依赖,你可以使用

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>${jersey2.version}</version>
    <scope>provided</scope>
</dependency>

和配置

<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.wld.rest</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>

最近看到很多人(使用 Glassfish 和 Jersey)的一个“问题”是 Glassfish 使用旧版本的 Jersey(旧版本指的是旧 2.x 版本)。目前最新的是2.17。 Glassfish 使用了接近 2.x 系列中第一个的东西。因此,新功能似乎存在一些兼容性问题。

我肯定会研究的一件事是 Updating Jersey 2 in GlassFish 4 .这是一篇很好的文章。简单的启动应用程序可能不会遇到任何问题,但对于新功能,尝试在 Glassfish 中升级 Jersey 可能会有所帮助。

另一件事,记得摆脱你的 Jersey 1.x 依赖。两者完全不相容。另请注意 Maven 依赖项中的 provided 范围。由于 Glassfish 已经内置了 Jersey,我们只使用内部依赖项。

Jersey 2.x Documentation 放在手边也是一件好事

哦,还有一件事。 Jersey 有一个原型(prototype)可以帮助您轻松入门。在 Netbeans 中就可以

  1. 新项目
  2. Maven → 来自 Archetype 的项目
  3. 搜索jersey-quickstart-webapp
  4. 选择组 ID org.glassfish.jersey.archetypes
  5. 应显示最新版本。

关于java - JEE 无法运行 JAX-RS WebService 框架应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546582/

相关文章:

java - 如何使用 Spring Boot Rest 的自定义异常?

java - 使用 java 库将音频 AMR 转换为 WAV

java - 一对多表创建

java - Apache POI docx - 如何设置页面大小?

java - 使用 Oracle 数据库数据的 Primefaces 饼图

java - 制作Java I/O并更改文件以在java中分割

java - 为什么我的 Web 应用程序可以在 Glassfish 上运行,但不能在 Tomcat 服务器上运行?

java - maven 3.0+ 在 'mvn deploy' 上跳过插件执行

maven - 如何将Processing核心库与Maven一起使用?

java - @Query 不运行空条件