首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从openejb打JAX-RS 2电话?

从openejb打JAX-RS 2电话?
EN

Stack Overflow用户
提问于 2018-03-06 17:06:59
回答 1查看 133关注 0票数 0

我们运行Websphere 9和openejb 4.7.2作为应用服务器。Websphere同时托管REST服务和调用REST服务。

我们现在想在openejb中调用和托管服务。我们从呼叫REST服务开始。

我想知道,为了加载javax.ws.rs.client.Client,我们应该在类路径中包含哪些jar?

相同的类在websphere中工作很好(没有任何修改),但这是我们在启动时从openejb获得的堆栈跟踪:

代码语言:javascript
复制
java.lang.NoClassDefFoundError:
Could not fully load class: my.class.RESTClientBean due to:javax.ws.rs.client.Client in classLoader:

org.apache.openejb.core.TempClassLoader@ba08782 at org.apache.xbean.finder.ClassFinder.(ClassFinder.java:136) at org.apache.xbean.finder.ClassFinder.(ClassFinder.java:127) at org.apache.openejb.config.rules.CheckCallbacks.validate(CheckCallbacks.java:85) at org.apache.openejb.config.rules.ValidationBase.validate(ValidationBase.java:50) at org.apache.openejb.config.AppValidator.validate(AppValidator.java:101)在org.apache.openejb.config.ValidateModules.deploy(ValidateModules.java:38) at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:403) at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:971) at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:832) at org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:546) at org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:591) at org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:459) at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:438) at org.apache.openejb.OpenEJB$Instance.(OpenEJB.java:150) at org.apache.openejb.OpenEJB$Instance.(OpenEJB.java:67) at org.apache.openejb.OpenEJB.init(OpenEJB.java:298)在org.apache.openejb.OpenEJB.init(OpenEJB.java:278) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:508) at org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36) at org。apache.openejb.core.LocalInitialContextFactory.init(LocalInitialContextFactory.java:98) at org.apache.openejb.core.LocalInitialContextFactory.init(LocalInitialContextFactory.java:62) at org.apache.openejb.core.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:46) at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:695) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:324) at javax.naming.InitialContext.init(InitialContext.java:255) atjavax.naming.InitialContext.(InitialContext.java:227) at my.calling.Util.init(Util.java:199)

简化代码示例:

代码语言:javascript
复制
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;
...
private static void start() {
        Client client = ClientBuilder.newClient();
        Response response = client.target(URI + "abc?code=41").request().get();
        int status = response.getStatus();
        System.out.println("Status code: " + status);
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-06 18:00:44

EJB和JaxRS是两种不同的规范。OpenEJB实现了EJB规范。要使用RESTFul API进行JaxRS服务调用,您需要一个实现JaxRS规范的库。泽西岛就是这样一个图书馆。看看这里-

泽西下载

您还可以考虑其他JaxRS实现,如Resteasy、Restlet等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49136349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档