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
模块。