Payara / GlassFish中的RESTful Web服务

时间:2017-09-02 21:18:22

标签: rest maven ejb ear

我有一个最简单的RESTful Web服务,如下所示:

@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>
[..]

我将此ejb部署在ear文件中。耳朵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),服务器日志报告成功部署。

然而,网络服务似乎不存在。

[mydomain]:8080/rest/list/instruments/返回404。

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

我不确定我是否无法找到正确的网址,或者网络服务是否存在。

到目前为止,耳内没有war文件,只有ejb。我在读这可能会导致问题,但我不确定这也适用于这种情况。

1 个答案:

答案 0 :(得分:0)

将RESTful Web服务ejb模块打包到ear将无法正常工作。他们需要一个war存档来提供可用的网络内容。

为了保持网络用户界面的纤薄,可以在另一个war(无ear存档中打包网络服务,该存档仅包含ejb模块。