我有 confluence 插件项目,我想使用 spring 注释为我的服务类实现事务,但我收到错误:
[INFO] [talledLocalContainer]2014-05-23 13:12:06,298 ERROR [main][plugin.osgi.factory.OsgiPlugin] enableInternal Detected an error (BundleException) enabling the plugin 'mypackage'
: Unresolved constraint in bundle mypackage [176]: Unable to resolve 176.0: missing requirement [176.0] package; (&(package=org.springframework.jdbc.datasource.DataSour
ceTransactionManager)(version>=2.5.6.SEC02)). This error usually occurs when your plugin imports a package from another bundle with a specific versio
n constraint and either the bundle providing that package doesn't meet those version constraints, or there is no bundle available that provides the specified package.
For more details on how to fix this, see https://developer.atlassian.com/x/mQAN
这是代码:
我的配置文件.xml
...
<!-- TRANSACTIONS CONF -->
<!-- enable the configuration of transactional behavior based on annotations -->
<tx:annotation-driven transaction-manager="txManager"/>
<!-- PlatformTransactionManager -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- TRANSACTIONS CONF END-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="url" value="${db.url}" />
<property name="driverClassName" value="${db.driver}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.password}" />
</bean>
<bean id="transactionAwareDataSource"
class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
<constructor-arg ref="dataSource" />
</bean>
<bean id="connectionProvider" class="org.jooq.impl.DataSourceConnectionProvider">
<constructor-arg ref="transactionAwareDataSource" />
</bean>
...
服务类
@Service
@Transactional
public class AdminServiceImpl implements AdminService<ProjectRecord> {
private IDao<ProjectRecord> dao;
@Autowired
public AdminServiceImpl(IDao<ProjectRecord> dao) {
super();
this.dao = dao;
// TODO Auto-generated constructor stub
}
@Override
public void delete(Long id) {
// TODO Auto-generated method stub
dao.delete(id);
}
@Override
public void changeName(Long id, String newName) {
// TODO Auto-generated method stub
dao.update(dao.findbyId(id));
}
}
pom.xml
...
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>2.5.6.SEC02</version>
<scope>provided</scope>
</dependency>
...
...
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-confluence-plugin</artifactId>
<version>${amps.version}</version>
<extensions>true</extensions>
<configuration>
<productVersion>${confluence.version}</productVersion>
<productDataVersion>${confluence.data.version}</productDataVersion>
<instructions>
<Import-Package>
org.springframework.jdbc.datasource.DataSourceTransactionManager;version="2.5.6.SEC02"
</Import-Package>
</instructions>
</configuration>
</plugin>
<plugin>
在我的引用库项目中,我有一个适当的库:
那是我做错了吗?