Я использую Seam с JBoss AS. В моем приложении у меня есть SLSB, который также объявлен как компонент шва с использованием аннотации @Name. Я пытаюсь ввести и использовать этот SLSB в другом компоненте шва, используя аннотацию @In.
Моя проблема в том, что иногда Seam вводит локальный интерфейс (тогда код работает нормально), а иногда seam вводит удаленный интерфейс (тогда возникает ошибка при выполнении кода). Я пробовал делать все, что указано в этой ссылке: http://docs.jboss.org/seam/2.2.0.GA/reference/en-US/html/configuration.html#config.integration.ejb.container < / а>
SeamInterceptor настроен,
я указал шаблон jndi в файле components.xml (‹core: init debug =" true "jndi-pattern =" earName / # {ejbName} / local "/>),
Я также пробовал использовать аннотацию @JndiName ("earName / ejbName / local") для каждого SLSB,
Я пробовал установить это свойство (org.jboss.seam.core.init.jndiPattern = earName / # {ejbName} / local) в файле seam.properties.
Я также попытался поместить приведенный ниже текст в файл web.xml.
<context-param> <param-name>org.jboss.seam.core.init.jndiPattern</param-name> <param-value>earName/#{ejbName}/local</param-value> </context-param>
Даже после выполнения всех вышеупомянутых действий шов все еще иногда вводит удаленный интерфейс. Я что-то упустил? Может ли кто-нибудь сказать мне, как решить эту проблему и сказать шову, чтобы он всегда вставлял локальный интерфейс?
Мой файл components.xml выглядит так:
<?xml version="1.0" encoding="UTF-8"?> <components xmlns="http://jboss.com/products/seam/components" xmlns:core="http://jboss.com/products/seam/core" xmlns:persistence="http://jboss.com/products/seam/persistence" xmlns:drools="http://jboss.com/products/seam/drools" xmlns:bpm="http://jboss.com/products/seam/bpm" xmlns:security="http://jboss.com/products/seam/security" xmlns:mail="http://jboss.com/products/seam/mail" xmlns:web="http://jboss.com/products/seam/web" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.1.xsd http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.1.xsd http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.1.xsd http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.1.xsd http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.1.xsd http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.1.xsd http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.1.xsd http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.1.xsd"> <core:init debug="true" jndi-pattern="myEarName/#{ejbName}/local"/> <core:manager concurrent-request-timeout="500" conversation-timeout="120000" conversation-id-parameter="cid" parent-conversation-id-parameter="pid"/> <web:hot-deploy-filter url-pattern="*.seam"/> <persistence:managed-persistence-context name="entityManager" auto-create="true" persistence-unit-jndi-name="@puJndiName@"/> <drools:rule-base name="securityRules"> <drools:rule-files> <value>/security.drl</value> </drools:rule-files> </drools:rule-base> <security:rule-based-permission-resolver security-rules="#{securityRules}"/> <security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true"/> <event type="org.jboss.seam.security.notLoggedIn"> <action execute="#{redirect.captureCurrentView}"/> </event> <event type="org.jboss.seam.security.loginSuccessful"> <action execute="#{redirect.returnToCapturedView}"/> </event> <component name="org.jboss.seam.core.init"> <property name="jndiPattern">myEarName/#{ejbName}/local</property> </component> </components>
А мой компонент EJB выглядит так:
@Stateless
@Name("myEJBComponent")
@AutoCreate
public class MyEJBComponentImpl implements MyEJBComponentRemote, MyEJBComponentLocal {
public void doSomething() {
}
}