Karaf version 4.2.4.
When I deploy bundles at first time - everything works as expected, but if I
remove bundles(from deploy directory) and do deploy them again(copy to
deploy directory), I will get "java.lang.ClassCastException: test.Test
cannot be cast to test.Test" error at runtime and a blueprint container
fail.
I suggest that error caused by using different classloaders but I can't
understand how to avoid it?
May be I have to use special karaf commands to undeploy/deploy?
Main question is - how to redeploy bundles without stopping the server?
Description. 3 bundles:
1. *datasource *- used for instantiation DataSource and put in a blueprint
container. There is no java code - blueprint.xml configuration only
```
...
<service interface="javax.sql.DataSource" ref="dataSource" />
...
```
2. *domain* - injects datasource and creates service which use mybatis
mapper. POJO also described here.
blueprint.xml:
```
<reference id="datasource" interface="javax.sql.DataSource"/>
<bean id="managerimpl" class="test.TestManagerImpl">
<argument ref="datasource"/>
</bean>
<service id="testmanager" interface="test.TestManager" ref="managerimpl"/>
```
Service class:
```
public class TestManagerImpl implements TestManager {
private final Mapper mapper;
private final DataSource dataSource;
public TestManagerImpl(DataSource dataSource) {
this.dataSource = dataSource;
this.mapper =
MybatisSqlSessionGetter.getSqlSessionMapperInstance(dataSource,
Mapper.class);
}
@Override
public Test getTestById(String id) {
return mapper.getById(id);
}
...
}
```
POJO:
```
public class Test {
private String id;
private String name;
...
}
```
3. *dependent *- injects service from domain bundle and use it for getting
POJO.
blueprint.xml:
```
<reference id="testmanager" interface="test.TestManager"/>
<bean id="dependentService" class="test.DependentService">
<argument ref="testmanager"/>
</bean>
...
```
Service:
```
public class DependentService {
private final TestManager manager;
public DependentService(TestManager manager) {
this.manager = manager;
Test testById = manager.getTestById("uuid"); //
ClassCastException
}
}
```
--
Sent from: http://karaf.922171.n3.nabble.com/Karaf-Dev-f930721.html