Hi I guess it's specific for the way you deploy your bundles (using the deploy folder). If you do the same via bundle:* commands it should be fine right ?
Let me check if it?s not an issue with fileinstall. I don?t remember any issue there. Regards JB > Le 3 avr. 2020 à 15:56, Anton <antoxa...@list.ru.INVALID> a écrit : > > 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