3.2.13.2. Problemas de Migração do Arquivo Seam 2.2


Seam 2.2 Drools e Java 7 não são compatíveis
Seam 2.2 Drools e Java 7 são incompatíveis e falham com org.drools.RuntimeDroolsException: valor '1.7' não é um erro de nível de mensagem válido.
Seam 2.2.5 assinado como cglib.jar evita o funcionamento do exemplo Spring
Quando o exemplo Spring é executado usando o cglib.jar assinado enviado junto com Seam 2.2.5 no JBoss EAP 5, uma falha com a seguinte causa raiz ocorre:
java.lang.SecurityException: class "org.jboss.seam.example.spring.UserService$$EnhancerByCGLIB$$7d6c3d12"'s signer information does not match signer information of other classes in the same package
Copy to Clipboard Toggle word wrap
A solução para este problema é remover a assinatura de cglib.jar, como a seguir:
zip -d $SEAM_DIR/lib/cglib.jar META-INF/JBOSSCOD\*
O exemplo Seambay falha com NotLoggedInException
A causa deste problema é o cabeçalho da mensagem SOAP ficando nulo durante o processamento da mensagem em SOAPRequestHandler e, como consequência, a ID de conversa não é definida.
A solução para este problema é substituir org.jboss.seam.webservice.SOAPRequestHandler.handleOutbound, conforme descrito em https://issues.jboss.org/browse/JBPAPP-8376.
O exemplo Seambay falha com UnsupportedOperationException: nenhuma transação
Este erro é causado por alterações no nome JNDI do UserTransaction no JBoss EAP 6.
A solução para este problema é substituir org.jboss.seam.transaction.Transaction.getUserTransaction, conforme descrito em https://issues.jboss.org/browse/JBPAPP-8322.
O exemplo de tarefas lança org.jboss.resteasy.spi.UnhandledException: não foi possível cancelar o marshall do corpo da solicitação
Este erro é causado pela incompatibilidade entre seam-resteasy-2.2.5, incluído no JBoss EAP 5.1.2), e RESTEasy 2.3.1.GA, incluído no JBoss EAP 6.
Para solucionar este problema, use jboss-deployment-structure.xml para excluir resteasy-jaxrs, resteasy-jettison-provider e resteasy-jaxb-provider da implantação principal e resteasy-jaxrs, resteasy-jettison-provider, resteasy-jaxb-provider e resteasy-yaml-provider do jboss-seam-tasks.war, conforme descrito em https://issues.jboss.org/browse/JBPAPP-8315. Depois, é necessário incluir as bibliotecas RESTEasy agrupadas com Seam 2.2 no EAR.
Deadlock entre org.jboss.seam.core.SynchronizationInterceptor e o bloqueio EJB da instância de componente com monitorização de estado (stateful) durante uma solicitação AJAX
Uma página de erro com a mensagem a seguir ou uma mensagem semelhante é exibida: "Caused by javax.servlet.ServletException with message: "javax.el.ELException: /main.xhtml @36,71 value="#{hotelSearch.pageSize}": org.jboss.seam.core.LockTimeoutException: could not acquire lock on @Synchronized component: hotelSearch".
O problema é que Seam 2 realiza seu próprio bloqueio fora do bean de sessão com monitorização de estado (stateful) (SFSB) e com um escopo diferente. Isto significa que se um thread acessa um EJB duas vezes na mesma transação, após a primeira invocação, ele terá o bloqueio SFSB, mas não o bloqueio seam. Assim, um segundo thread pode adquirir o bloqueio seam, o qual atingirá, então, o bloqueio EJB e aguardará. Quando o primeiro thread tenta sua segunda invocação, ele bloqueará o deadlock e o interceptor seam 2. No Java EE 5, os EJBs lançariam imediatamente uma exceção aos acessos concomitantes. Esse comportamento foi alterado no Java EE 6.
Para solucionar este problema é preciso adicionar @AccessTimeout(0) ao EJB. Isto fará com que um ConcurrentAccessException seja lançado imediatamente quando esta situação ocorrer.
A criação de pedido do exemplo Dvdstore falha com javax.ejb.EJBTransactionRolledbackException
O exemplo dvdstore exibe o seguinte erro:
JBAS011437: Found extended persistence context in SFSB invocation call stack but that cannot be used because the transaction already has a transactional context associated with it. This can be avoided by changing application code, either eliminate the extended persistence context or the transactional context. See JPA spec 2.0 section 7.6.3.1.
Copy to Clipboard Toggle word wrap
Este problema é devido às alterações na especificação JPA.
A solução para este problema é alterar o contexto de persistência para transactional nas classes CheckoutAction e ShowOrdersAction, além de usar a operação de mesclagem do gerenciador de entidade nos métodos cancelOrder e detailOrder.
O provedor do JBoss Cache Seam Cache não pode ser usado no JBoss EAP 6
JBoss Cache não é suportado no JBoss EAP 6. Isto faz com que o provedor do JBoss Cache Seam falhe em um aplicativo Seam no servidor do aplicativo com:
java.lang.NoClassDefFoundError: org/jboss/util/xml/JBossEntityResolver
Copy to Clipboard Toggle word wrap
.
Hibernate 3.3.x Auto examina por problemas de entidades JPA com o JBoss EAP 6
A solução para este problema é listar manualmente todas as classes de entidade no arquivo persistence.xml. Por exemplo:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="example_pu">
        <description>Hibernate 3 Persistence Unit.</description>
        <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
        <properties>
            <property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" />
        </properties>
        <class>com.acme.Foo</class>
        <class>com.acme.Bar</class>
    </persistence-unit>
</persistence>
Copy to Clipboard Toggle word wrap
Chamar componentes EJB Seam a partir de Threads não pertencentes a EJB gera javax.naming.NameNotFoundException
Este problema é o resultado de alterações no JBoss EAP 6 para implementar o novo sistema de carregamento de classe modular e adotar as novas convenções do namespace JNDI padronizadas. O namespace java:app é designado para os nomes compartilhados por todos os componentes em um aplicativo único. Threads não pertencentes a EE, tais como threads assíncronos Quartz, devem usar o namespace java:global, o qual é compartilhado por todos os aplicativos implantados em uma instância do servidor do aplicativo.
Caso você receba javax.naming.NameNotFoundException, quando tentar chamar os componentes EJB Seam a partir dos métodos assíncronos Quartz, você deve modificar o arquivo components.xml para usar o nome JNDI global, por exemplo:
<component class="org.jboss.seam.example.quartz.MyBean" jndi-name="java:global/seam-quartz/quartz-ejb/myBean"/>
Copy to Clipboard Toggle word wrap
Para mais informações sobre as alterações JNDI, consulte Seção 3.1.8.1, “Atualização dos Nomes do Namespace JNDI do Aplicativo” . Para mais informações sobre este problema, em particular, consulte BZ#948215 - Seam2.3 javax.naming.NameNotFoundException trying to call EJB Seam components from quartz asynchronous methods nas notas de lançamento 2.2.0 Release Notes para Red Hat JBoss Web Framework Kit no Portal do Consumidor Red Hat .
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2026 Red Hat
Voltar ao topo