RESTful Web服务/ GlassFish的

问题描述:

我有一个最简单的RESTful Web服务这样的:RESTful Web服务/ GlassFish的

@Stateless 
@Path("/list/instruments") 
public class InstrumentsProvider { 

@GET 
@Produces({MediaType.APPLICATION_JSON}) 
public String getAvailableInstruments() { 

[..] 

} 

@ApplicationPath("/rest") 
public class RestApplication extends Application { 
    @Override 
    public Set<Class<?>> getClasses() { 
     final Set<Class<?>> classes = new HashSet<>(); 
     classes.add(InstrumentsProvider.class); 
     return classes; 
    } 
} 

将根据pom.xml看起来是这样的:

[..] 
<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ejb-plugin</artifactId> 
       <configuration> 
        <ejbVersion>3.1</ejbVersion> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
[..] 

我在ear文件中部署这个ejb。耳pom.xml看起来是这样的:

[..] 
<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>2.10.1</version> 
       <configuration> 
        <modules> 
         <ejbModule> 
          <groupId>com.cmehistory</groupId> 
          <artifactId>rest-server</artifactId> 
         </ejbModule> 
        </modules> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
[..] 

产生的ear看起来不错,它包含了我的所有库和EJB jar

我部署到Payara Server 4.1.2.173 #badassfish (build 24),服务器日志报告成功部署。

尽管如此,Web服务似乎不在那里。

[mydomain]:8080/rest/list/instruments/回到404

我也试过[mydomain]:8080/ear-0.0.1-SNAPSHOPT.jar/ejb-0.0.1-SNAPSHOT.jar/rest/list/instruments/这也给了错误404

我不知道如果我只是无法找到正确的URL,或者如果网络服务甚至不存在。

有耳内没有战争文件,到目前为止,仅仅是EJB。我读这可能会导致问题,但我不确定这也适用于这种情况。

将REST风格的web服务打包ejb模块转换为ear将不起作用。他们需要一个war存档,以提供Web内容的工作。

为了保持网络界面苗条,Web服务可以包装内另一个war(无ear档案,其中只包含ejb模块。