요청을 사용하는 웹 서비스 (jboss 이음매)가 있고, 다른 작업 영역 구성 요소로 작업을 위임합니다. 이음매 구성 요소 중 하나에는 Events.instance(). raiseTransactionSuccessEvent와 같은 이벤트 생성 기능이 있습니다.이 이벤트를 수신하는 메서드는 호출되지 않습니다.이음새 구성 요소의 이벤트 발생
구성이 누락 되었습니까?
요청을 사용하는 웹 서비스 (jboss 이음매)가 있고, 다른 작업 영역 구성 요소로 작업을 위임합니다. 이음매 구성 요소 중 하나에는 Events.instance(). raiseTransactionSuccessEvent와 같은 이벤트 생성 기능이 있습니다.이 이벤트를 수신하는 메서드는 호출되지 않습니다.이음새 구성 요소의 이벤트 발생
구성이 누락 되었습니까?
나는 그것을 알아 냈다. ejb 트랜잭션과 seam 트랜잭션을 절대로 섞어서는 안됩니다. ejb에서 ejb trasaction 관리를 명시 적으로 비활성화합니다. 그것은 일했다 !! !!
@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");
}
}
을 다음과 같이
는 @Tair 내가
@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 다음과 같이 웹 서비스 요청을 소비 EJB 구성 요소가
는 심 구성 요소입니다 , 나는 <transaction:ejb-transaction />
을 가지고 있으므로 이음매가 컨테이너 트랜잭션 이벤트에 대한 업데이트를 얻을 수 있고 seam managed persiste를 가질 수 있습니다. nce 컨텍스트
<persistence:managed-persistence-context
auto-create="true" name="entityManager" persistence-unit-jndi- name="java:/pilotEntityManagerFactory" />
답장을 보내 주셔서 감사합니다. 을 추가하여 components.xml 파일에서 컨테이너 관리 트랜잭션을 구성했습니다. 문서에 따르면 EJB가 호출 될 때 트랜잭션이 투명하게 시작됩니다 (제 경우에는 웹 서비스 호출에 의해 호출됩니다). 나는 EJB가 호출 될 때 시작되는 트랜잭션의 범위가 무엇인지 알지 못한다. 제 경우의 EJB는 웹 서비스 호출을 소비 한 다음 다른 EJB가 아닌 Seam 컴포넌트에 작업을 위임합니다. 나는 너의 도움에 감사 할 것이다. –
user1000258
아무도 어떤 생각이있다 ????? – user1000258
소스 코드의 가치는 천 가지입니다. :) – Tair