0

我有一个使用请求的 Web 服务(jboss seam),它进一步将其工作委托给不同的接缝组件。接缝组件之一具有事件生成能力,如 Events.instance().raiseTransactionSuccessEvent,监听此事件的方法不会被调用。

我是否缺少任何配置?

请建议

4

3 回答 3

0

@Tair

我有一个使用 Web 服务请求的 ejb 组件,如下所示

@Name("plugin")
@Stateless
@WebService(name = "PluginService", serviceName = "PluginService")
public class PluginService implements IPlugin {
    @WebMethod
    public boolean createUser(String username, String password) {
        System.out.println("in login ");
        WebAuthenticator authenticator = (WebAuthenticator) Component
                .getInstance("webauthenticator");

        usreCreated = authenticator.create(username, password);
        System.out.println("valid user "+validUser);
                return userCreated;
}
}

WebAuthenticator 是一个接缝组件,如下

@Name("webauthenticator")
@Scope(ScopeType.CONVERSATION)

public class WebAuthenticator {

    @In
    EntityManager entityManager;

        @Observer("test")
        public void test()
        {
        System.out.println("A transaction success event was fired");
        }

    private static Log log = (Log) Logging.getLog(WebAuthenticator.class);
    private static byte[] accountPassword = null;
    private static Account currentAccount = null;

    public boolean createUser(String username, String password) {

        System.out.println("In web authenticator");
                User user = new User();
                user.username = username;
                user.password = password;
                entityManager.persist(user);
                entityManager.flush();
                Events.instance().raisTransactionSuccessEvent("test");
}
}

在 components.xml 文件中,我有<transaction:ejb-transaction />,以便接缝可以获取有关容器事务事件的更新,并且我有接缝管理的持久性上下文

    <persistence:managed-persistence-context
   auto-create="true" name="entityManager" persistence-unit-jndi-   name="java:/pilotEntityManagerFactory" />
于 2012-07-12T21:31:29.350 回答
0
  1. 确保在从您的 Web 服务调用 Seam 组件时启动事务。如果没有,请手动启动它。
  2. 确保事务实际提交。
于 2012-06-30T17:27:34.720 回答
0

我想到了。结论是永远不要将 ejb 事务与 seam 事务混合。我明确禁用了 ejb 中的 ejb 事务管理。有效!!。

于 2012-07-19T21:33:31.287 回答