Java 将EJB公开为JAX-RS服务
当我想将EJB项目公开为JAX-RS服务时,我遇到了一个问题。我曾多次试图找到解决方案,但都没有解决。我已成功部署我的应用程序,但在localhost:4848=>Applications=>my_应用程序中未找到我的rest服务。通常,如果部署了rest服务,则会有“启动”按钮 我使用glassfish4和EclipseJavaEE 我的EJB项目如下所示: 包ejb:TestSessionBean.java 包rest:restest.java和restestapp.java TestSessionBean.javaJava 将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
@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我不知道。它对我起作用了。您在服务器日志中查看了任何异常吗?