我尝试构建一个带有Rest服务和EJB注入的Java EE7应用程序。我创建了一个多模块maven项目,并将其部署在Glassfish 4上。我最后一个EAR包含一个带有EJB的JAR,例如,带有我的Rest服务定义:
@Stateless
@Path("countries")
public class CountryRest {
//@EJB
//StockService stockService;
@GET
public Response getCountries() {
//stockService.getAll(); --> firing a NPE, stockService is Null
return Response.ok().build();
}
}
@Stateless
@Remote(IStockService.class)
public class StockService implements IStockService {
@Override
public List<Stock> getAllStock() {
return new ArrayList<Stock>();
}
}
当我部署我的应用程序时,我看到下面的日志似乎还可以。即使我想知道它为什么定义“java:global”JNDI,因为默认情况下@Stateless EJB是@local:
Portable JNDI names for EJB CountryRest: [java:global/GeoData-ear/GeoData-ejb-1.0-SNAPSHOT/CountryRest, java:global/GeoData-ear/GeoData-ejb-1.0-SNAPSHOT/CountryRest!com.tomahim.geodata.rest.CountryRest]
Portable JNDI names for EJB StockService: [java:global/GeoData-ear/GeoData-ejb-1.0-SNAPSHOT/StockService, java:global/GeoData-ear/GeoData-ejb-1.0-SNAPSHOT/StockService!com.tomahim.geodata.services.IStockService]
Avertissement: An instance of EJB class, com.tomahim.geodata.rest.CountryRest, could not be looked up using simple form name. Attempting to look up using the fully-qualified form name.
javax.naming.NamingException: Lookup failed for 'java:module/CountryRest' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: No object bound to name java:module/CountryRest]
编辑1:通过将我的Rest定义和EJB放置在我的webapp maven模块部署为WAR中,我能够使@EJB注入工作。因此,似乎只有在将EJB部署到JAR中时才会出现问题。知道吗?JAR和WAR部署之间有什么区别?
JAX-RS规范要求所有RESTendpoint必须位于WAR文件中。你真的需要EAR文件吗?
从rest服务抛出的异常以某种方式返回为JSON是否可能?我有一个JAX-RS Rest服务来实现这一点。当我现在抛出它时,它被映射到一个HTML响应,这不是我想要的。据我所知,ExceptionMapper也会将其映射到HTML?是否有其他可供选择的或库允许以JSON格式返回异常?
你好,我曾与JAX-WS合作开发基于SOAP的网络服务。现在我想使用REST,因为正如我从这里学习的那样,REST比SOAP有优势。 但从不同的文章中,我知道我们也可以从JAX-WS创建RESTful Web服务。但是大多数人说我们应该使用JAX-RS而不是JAX-WS。 我的问题是JAX-WS RESTful webservice和JAX-RS(泽西)之间有什么区别。JAX-RS相对于JAX-W
泽西-客户端 泽西-普通 jersey-container-servlet jersey-container-servlet-core 泽西-服务器 如果我这样做,我总是得到以下异常: 经过一些研究,我发现我应该添加jersey-servlet-1.12.jar,而不是从上面发布的下载源添加jar。所以我做了。我将其添加到web.xml中
问题内容: 我试图在我的机器上运行一个简单的“ Hello World” RESTful Web服务。我使用Eclipse Kepler和GlassFish 4.0。我能够部署该服务,并且可以在GlassFish的管理页面上看到该服务,但是当我尝试访问该服务时,出现以下错误:“ HTTP状态404-找不到”。 以下是简单服务的代码: 为了访问该服务,我尝试以下URL:,其中Eclipse项目的名称
我正在开发一个安全的web应用程序,它可以进行金融交易,并在其中使用spring。哪个更适合用于安全性、JAX-RS服务或SpringREST服务?我考虑使用spring,因为我们已经在应用程序中使用它了,如果它提供了功能,那么为什么要使用JAX-RS,但正如我所说的,它是一个高度安全的web应用程序,人们将在其中购买东西并进行金融交易,所以我必须看看哪个更适合使用。 我看了下面的博客还是有点困惑
我对使用jersey jetty glassfish之类的web服务器/应用程序/servlet感到困惑。还有web.xml文件?什么?ResourceConfig只接受类,而不接受它们的实例。一切似乎都是那么的一团糟。 我怎么能就这样做类似的事情呢?