Web services 使用WebServiceContext测试@Webservice EJB(使用OpenEJB?)
我有一些EJB作为JAX-WS Web服务:Web services 使用WebServiceContext测试@Webservice EJB(使用OpenEJB?),web-services,testing,jax-ws,cxf,openejb,Web Services,Testing,Jax Ws,Cxf,Openejb,我有一些EJB作为JAX-WS Web服务: @WebService @Stateless @Remote(MobileFacade.class) public class MobileFacadeBean implements MobileFacade { ... @Resource WebServiceContext wsc; ... } 在此Web服务类中,通过@Resource注入WebServiceContext。我使用这个WebServiceCon
@WebService
@Stateless
@Remote(MobileFacade.class)
public class MobileFacadeBean implements MobileFacade {
...
@Resource
WebServiceContext wsc;
...
}
在此Web服务类中,通过@Resource注入WebServiceContext。我使用这个WebServiceContext来获取实现中的主体。这很有效,但现在我想知道如何对这个类进行单元测试
到目前为止,我正在使用OpenEJB测试我的EJB。因为Web服务类也是一个无状态会话Bean,所以我真的希望在这里使用相同的方法。然而,它的工作并没有那么容易——当然,它抱怨说,如果不作为Web服务调用,就没有WebServiceContext
所以第一个问题是:有没有办法在OpenEJB中模拟WebServiceContext
如果没有,您会选择什么方法来测试这种Web服务类
干杯,
FrankOpenEJB示例zip文件中有一些@WebService单元测试示例。你想要的一切都应该很好
webservice安全示例听起来与您想要的完全一样。在线版本使用@RolesAllowed使容器进行安全检查,而不是在代码中进行检查,但是可以在代码中检查原则。下面是对该示例的一个稍加修改的版本,它对我来说没有任何问题
豆子
测试
图书馆
如果使用maven,请将正常的openejb核心依赖项切换为openejb cxf,如下所示。这将把apachecxf和OpenEJB/CXF集成代码添加到类路径中
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-cxf</artifactId>
<version>3.1.4</version>
<scope>test</scope>
</dependency>
如果不使用maven,最简单的方法就是从OpenEJB zip文件的lib/目录添加所有JAR。David,在CalculatorTest中的回答中,您使用了CalculatorWs.class,它的接口是否与webservice端实现中使用的接口相同。我们必须创建web服务客户端吗 同样在David的例子中,而不是
QName calcServiceQName = new QName("http://superbiz.org/wsdl", "CalculatorWsService");
使用
谢谢你的回答。听起来是个好办法。我会尽快试一试。
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-cxf</artifactId>
<version>3.1.4</version>
<scope>test</scope>
</dependency>
QName calcServiceQName = new QName("http://superbiz.org/wsdl", "CalculatorWsService");
QName calcServiceQName = new QName("http://superbiz.org/wsdl", "CalculatorPort");