eclipse からのデプロイで次の例外が発生し、コンポーネントが重複していることがわかります。私が見ることができるのは1つのクラスとしてのみ定義されています。JBossの既存のコンポーネントに干渉する場合に備えて、名前を変更してみました(この問題を抱えている人を見ました)同じ結果になりました。@Interceptors(SpringBeanAutowiringInterceptor.class) を使用したのは初めてです。設定が間違っていますか?Eclipse/Kepler を使用して EJB 3.0 プロジェクトを作成し、Maven プロジェクトに構成/変換しました。これにより 2 つの同一のクラスが生成されたのではないかと思いましたが、Linux の find コマンドを使用すると、MdbDequeueFrom.class が 1 つしかないことがわかりました。コメントアウトすると、プロジェクトはデバッガーでデプロイおよび実行されます。
// @Stateless
// @Interceptors(SpringBeanAutowiringInterceptor.class)
豆が注入されないことを除いて。
コメントアウトされていない場合の例外:
Caused by: java.lang.IllegalArgumentException: JBAS011046: A component named
'MdbDequeueFrom' is already defined in this module
at
org.jboss.as.ee.component.EEModuleDescription.addComponent(EEModuleDescription.java:140)
私のMDBは次のように定義されています:
@MessageDriven(
activationConfig = { @ActivationConfigProperty(
propertyName = "destinationType", propertyValue =
"javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination",
propertyValue = "java:jboss/activemq/queue/IN_FROM"),
@ActivationConfigProperty(propertyName="acknowledgeMode",
propertyValue="Auto-acknowledge")
})
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
@ResourceAdapter("activemq-ra.rar")
public class MdbDequeueFrom implements MessageListener {
@Autowired
private ReferralService referralService;
public MdbDequeueFrom() {
}
サービスは次のように定義されます。
@Service("referralService")
@Transactional(readOnly = false)
public class ReferralServiceImpl implements ReferralService {
private static final Logger logger =
LoggerFactory.getLogger(ReferralServiceImpl.class);
@Autowired
private ReferralDao referralDao;
私の beanRefContext.xml は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg value="classpath*:applicationContext.xml" />
</bean>
</beans>
私のapplication.contextには次のものがあります:
<context:component-scan base-package="com.MdbDequeue"/>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:/OracleDS"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingLocations">
<list>
<value>classpath*:hbm/Referral.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="javax.persistence.validation.mode">none</prop>
</props>
</property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
p:basenames="messages" />
<context:annotation-config />
</beans>
これは、EJB 3.0 Maven プロジェクトとして定義されています。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org /2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MyGroup</groupId>
<artifactId>MdbDequeuer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>ejb</packaging>
<name>MdbDequeuer</name>
どんな助けでも大歓迎です。