Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将EJB公开为JAX-RS服务_Java_Web Services_Rest_Ejb_Jax Rs - Fatal编程技术网

Java 将EJB公开为JAX-RS服务

Java 将EJB公开为JAX-RS服务,java,web-services,rest,ejb,jax-rs,Java,Web Services,Rest,Ejb,Jax Rs,当我想将EJB项目公开为JAX-RS服务时,我遇到了一个问题。我曾多次试图找到解决方案,但都没有解决。我已成功部署我的应用程序,但在localhost:4848=>Applications=>my_应用程序中未找到我的rest服务。通常,如果部署了rest服务,则会有“启动”按钮 我使用glassfish4和EclipseJavaEE 我的EJB项目如下所示: 包ejb:TestSessionBean.java 包rest:restest.java和restestapp.java TestSes

当我想将EJB项目公开为JAX-RS服务时,我遇到了一个问题。我曾多次试图找到解决方案,但都没有解决。我已成功部署我的应用程序,但在localhost:4848=>Applications=>my_应用程序中未找到我的rest服务。通常,如果部署了rest服务,则会有“启动”按钮

我使用glassfish4和EclipseJavaEE

我的EJB项目如下所示:

包ejb:TestSessionBean.java

包rest:restest.java和restestapp.java

TestSessionBean.java

@Path("/peter")
@Stateless
@LocalBean
public class TestSessionBean {

    public TestSessionBean() {
        // TODO Auto-generated constructor stub
    }

    @GET
    public String sayHello() {
        return "Hello";
    }


}
@Path("/ep")
public class RestTest {     
    @GET
    public String sayBonjour() {
        return "Bonjour";
    }
}
@ApplicationPath("/test/*")
public class RestTestApp extends Application {  
}
restest.java

@Path("/peter")
@Stateless
@LocalBean
public class TestSessionBean {

    public TestSessionBean() {
        // TODO Auto-generated constructor stub
    }

    @GET
    public String sayHello() {
        return "Hello";
    }


}
@Path("/ep")
public class RestTest {     
    @GET
    public String sayBonjour() {
        return "Bonjour";
    }
}
@ApplicationPath("/test/*")
public class RestTestApp extends Application {  
}
restestapp.java

@Path("/peter")
@Stateless
@LocalBean
public class TestSessionBean {

    public TestSessionBean() {
        // TODO Auto-generated constructor stub
    }

    @GET
    public String sayHello() {
        return "Hello";
    }


}
@Path("/ep")
public class RestTest {     
    @GET
    public String sayBonjour() {
        return "Bonjour";
    }
}
@ApplicationPath("/test/*")
public class RestTestApp extends Application {  
}
我还尝试配置我的项目:Properties=>projectfacets=>enableJAX-RS(但当我单击“进一步配置可用”时,我得到了“Type:Disable Library configuration”

我尝试了localhost:8080/ejbtest/test/peter/和localhost:8080/ejbtest/test/ep,但两者都不起作用

但是,如果我创建一个新的动态Web项目all,并将ejbtest中的所有源文件复制到这个项目中。这很有效!所以我考虑在ejb项目的eclipse配置中做些什么。有解决方案吗


感谢您的高级指导。

我对Glassfish管理控制台不太熟悉,因此我不确定它如何与REST服务以及您所指的启动(操作)链接一起工作,但是您的
RestTest
工作得很好,
TestSessionBean
可以工作,如果它有一个用Http方法注释的方法(例如
@GET
)。但是,要使这两个方法发挥作用,并没有产生您在管理控制台中引用的
启动
链接。成员
@Path
只会使该类成为JAX-RS资源类,但您仍然需要公开带有Http方法注释的方法,否则所有方法都不会匹配REST请求,您将获得404 not found尝试访问来自
/peter
GET
请求,因为该类中没有任何方法与
GET
请求匹配。这就是JAX-RS的工作方式感谢响应,但我在TestSessionBean类中的函数sayHello之前添加了@GET,但它不起作用:localhost:8080/ejbtest/test/peter?你认为我需要吗导入eclipse配置或使用eclipse配置执行某些操作?我的RestTest也不起作用:localhost:8080/ejbtest/test/epHmmm我不知道。它对我起作用了。您在服务器日志中查看了任何异常吗?