从openejb进行JAX-RS 2调用?

问题描述 投票:0回答:1

我们正在运行Websphere 9和openejb 4.7.2作为我们的应用程序服务器。 Websphere都承载REST服务并调用REST服务。

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

我想知道我们应该在classpath中包含什么jar才能加载javax.ws.rs.client.Client?

同一个类在websphere中运行良好(没有任何修改)但这是我们在启动时从openejb获得的堆栈跟踪:

java.lang.NoClassDefFoundError:
Could not fully load class: my.class.RESTClientBean due to:javax.ws.rs.client.Client in classLoader:

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

简化的代码示例:

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);
    }
java jax-rs openejb
1个回答
1
投票

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

Jersey Download

您可以考虑使用其他JaxRS实现,如Resteasy,Restlet等,

© www.soinside.com 2019 - 2024. All rights reserved.