小编Fra*_*ank的帖子

使用WebServiceContext测试@Webservice EJB(使用OpenEJB?)

我有一些EJB作为JAX-WS Web服务:

@WebService
@Stateless
@Remote(MobileFacade.class)
public class MobileFacadeBean implements MobileFacade {
    ... 

   @Resource
   WebServiceContext wsc;

    ...
}
Run Code Online (Sandbox Code Playgroud)

在此Web Service类中,通过@Resource注入WebServiceContext.我使用此WebServiceContext来获取实现中的主体.这很有效,但现在我想知道如何(单元)测试这个课程!

到目前为止,我正在使用OpenEJB来测试我的EJB.由于Web Service类也是无状态会话Bean,我真的想在这里使用相同的方法.但是,它并不那么容易 - 当然,它抱怨在没有被称为Web服务时没有WebServiceContext.

所以第一个问题是:有没有办法在OpenEJB中模拟WebServiceContext?

如果不是,您会采用什么方法来测试这种Web服务类?

干杯,弗兰克

testing web-services cxf jax-ws openejb

2
推荐指数
1
解决办法
4373
查看次数

WSS4J 不解析 SOAP 消息

我有这样的代码:

private WSSecurityEngine engine = new WSSecurityEngine();
private CallbackHandler callbackHandler = new UsernamePasswordCallbackHandler();

@Test
public void testWss4jEngine() {

    InputStream in = getClass().getClassLoader().getResourceAsStream("soap/soapWithUsernameTokenRequest.xml");

    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder;
    Document doc = null;
    try {
        docBuilder = builderFactory.newDocumentBuilder();

        doc = docBuilder.parse(in);

    } catch (Exception e) {
        LOG.error("Error parsing incoming request. Probably it is not a valid XML/SOAP message.", e);

        return;
    }

    List<WSSecurityEngineResult> results = null;

    try {
        results = engine.processSecurityHeader(doc, null, callbackHandler, null);
    } catch (WSSecurityException e) {
        // TODO Auto-generated …
Run Code Online (Sandbox Code Playgroud)

ws-security soap wss4j

2
推荐指数
1
解决办法
1747
查看次数

JSF 2.1和Seam:s:令牌仍然需要

我正在将webapp从JSF 1.2升级到JSF 2.1(使用Apache MyFaces实现).该应用程序也使用Seam并防止XSRF攻击,我正在使用该<s:token>标签.

现在我想知道<s:token>JSF 2.1是否仍然需要它.

有人可以提供一些相关信息吗?

干杯弗兰克

seam jsf-2

2
推荐指数
1
解决办法
576
查看次数

EJB或CDI bean中套接字客户端的最佳实践

我的应用程序必须打开到服务器的tcp套接字连接并定期收听传入的消息.

在JEE 7应用程序中实现此目的的最佳实践是什么?

现在我有这样的事情:

@javax.ejb.Singleton
public class MessageChecker {

   @Asynchronous
   public void startChecking() {

     // set up things
     Socket client = new Socket(...);
     [...]


     // start a loop to retrieve the incoming messages
     while((line = reader.readLine())!=null){

        LOG.debug("Message from socket server: " + line);

    }

   }
}
Run Code Online (Sandbox Code Playgroud)

使用@PostConstruct方法从@Startup bean调用MessageChecker.startChecking()函数.

@javax.ejb.Singleton
@Startup
public class Starter() {

   @Inject
   private MessageChecker checker;


   @PostConstruct
   public void startup() {
     checker.startChecking();
   }

}
Run Code Online (Sandbox Code Playgroud)

你认为这是正确的方法吗?实际上它运作不佳.应用程序服务器(JBoss 8 Wildfly)挂起,不再对关闭或重新部署命令作出反应.我感觉它被困在while(...)循环中.

干杯弗兰克

java sockets ejb java-ee

0
推荐指数
1
解决办法
2231
查看次数

标签 统计

cxf ×1

ejb ×1

java ×1

java-ee ×1

jax-ws ×1

jsf-2 ×1

openejb ×1

seam ×1

soap ×1

sockets ×1

testing ×1

web-services ×1

ws-security ×1

wss4j ×1