Mike, There's a good chance that nobody has tried the ServiceMix/Camel/iBatis comibination before. However, it sounds like a reasonable use case, so would you be willing to raise a JIRA issue and provide a patch with the stuff you have so far (perhaps remove the bits that are proprietary to your company or project) so we can turn it into a working example ?
Regards, Gert Vanthienen ------------------------ FuseSource Web: http://fusesource.com Blog: http://gertvanthienen.blogspot.com/ On Wed, Mar 23, 2011 at 3:19 PM, Michael Dewitte <[email protected]> wrote: > Can it have something to do with osgi settings via my POM ? > > Has someone ever used ibatis in camel via osgi ? > > Mike > > > > 2011/3/23 Michael Dewitte <[email protected]> > >> Thanks Charles... I tried, but doesn't change anything... >> >> And even searching hard, i can't find any sample on the net with iBatis AND >> osgi.... :-( >> >> Mike >> >> >> 2011/3/23 Charles Moulliard <[email protected]> >> >>> This is where it should be located. >>> >>> Can you place the file in the following directory and retry : >>> META-INF/spring/SqlMapConfig.xml ? >>> >>> On Wed, Mar 23, 2011 at 1:19 PM, Michael Dewitte >>> <[email protected]> wrote: >>> > oh, god... i saw using features:list that it was there, but hadn't >>> noticed >>> > it was "uninstalled"... pfff... Thanks for making me checking again ! >>> > Now, it does deploy ! >>> > But, as soon as the route is activated (dropping a file into the "input" >>> > directory), I got an exception : >>> > java.io.FileNotFoundException: class path resource [SqlMapConfig.xml] >>> cannot >>> > be opened because it does not exist >>> > at >>> > >>> org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)[56:org.springframework.core:3.0.5.RELEASE] >>> > at >>> > >>> org.apache.camel.component.ibatis.IBatisComponent.createSqlMapClient(IBatisComponent.java:88)[225:org.apache.camel.camel-ibatis:2.6.0] >>> > at >>> > >>> org.apache.camel.component.ibatis.IBatisComponent.getSqlMapClient(IBatisComponent.java:104)[225:org.apache.camel.camel-ibatis:2.6.0] >>> > at >>> > >>> org.apache.camel.component.ibatis.IBatisEndpoint.getSqlMapClient(IBatisEndpoint.java:77)[225:org.apache.camel.camel-ibatis:2.6.0] >>> > As i noted in the previous post, the SqlMapConfig.xml is in the jar, at >>> the >>> > root of the jar... isn't it where it should be located ? >>> > Thanks for your help ! >>> > Mike >>> > 2011/3/23 Charles Moulliard <[email protected]> >>> >> >>> >> Have you deployed the bundle camel-ibatis component on Smx4.x or Karaf >>> ? >>> >> >>> >> On Wed, Mar 23, 2011 at 12:13 PM, Michael Dewitte >>> >> <[email protected]> wrote: >>> >> > Thx, >>> >> > >>> >> > thanks to your indications and the sample here : >>> >> > I tried to go further. >>> >> > >>> >> > I made a bundle, using blueprint, in which I placed my blueprint and >>> the >>> >> > config files for ibatis. When I try to deploy it, I get an exception >>> : >>> >> > Caused by: org.apache.camel.FailedToCreateRouteException: Failed to >>> >> > create >>> >> > route route6 at: >>> To[ibatis:deleteUser?statementType=Delete] <<< >>> in >>> >> > route: Route[[From[file:activemq/input]] -> >>> [To[file:activemq/outpu... >>> >> > because of Failed to resolve endpoint: >>> >> > ibatis://deleteUser?statementType=Delete due to: >>> >> > org.osgi.service.blueprint.container.NoSuchComponentException: No >>> >> > component >>> >> > with id 'ibatis://deleteUser?statementType=Delete' could be found >>> >> > >>> >> > The structure of the jar is as follow : >>> >> > |-SqlMapConfig.xml >>> >> > |-Users.xml (the maps definitions) >>> >> > |-OSGI-INF >>> >> > |-blueprint >>> >> > |-blueprint.xml >>> >> > |-META-INF >>> >> > |MANIFEST.MF >>> >> > >>> >> > >>> >> > Here is my SqlMapConfig.xml : >>> >> > ----------------------------------------------- >>> >> > <sqlMapConfig> >>> >> > <transactionManager type="JDBC" commitRequired="false"> >>> >> > <dataSource type="SIMPLE"> >>> >> > <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/> >>> >> > <property name="JDBC.ConnectionURL" >>> >> > value="jdbc:mysql://localhost:3306/forem_1"/> >>> >> > <property name="JDBC.Username" value="root"/> >>> >> > <property name="JDBC.Password" value="mysql"/> >>> >> > </dataSource> >>> >> > </transactionManager> >>> >> > >>> >> > <sqlMap resource="User.xml"/> >>> >> > </sqlMapConfig> >>> >> > >>> >> > Here is my Users.xml : >>> >> > ---------------------------------------------- >>> >> > <sqlMap> >>> >> > <delete id="deleteUser"> >>> >> > delete from transfert_outbound where correlationId = 2 >>> >> > </delete> >>> >> > </sqlMap> >>> >> > >>> >> > Here is my blueprint.xml : >>> >> > ---------------------------------------------- >>> >> > <blueprint >>> >> > xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" >>> >> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> >> > xsi:schemaLocation=" >>> >> > http://www.osgi.org/xmlns/blueprint/v1.0.0 >>> >> > http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> >>> >> > >>> >> > <camelContext xmlns="http://camel.apache.org/schema/blueprint"> >>> >> > <route> >>> >> > <from uri="file:activemq/input"/> >>> >> > <to uri="file:activemq/output"/> >>> >> > >>> >> > <setBody> >>> >> > <simple> >>> >> > NEW FileMovedEvent(file: ${file:name}, timestamp: >>> >> > ${date:now:hh:MM:ss.SSS}) >>> >> > </simple> >>> >> > </setBody> >>> >> > <to uri="log:events"/> >>> >> > <to uri="ibatis:deleteUser?statementType=Delete"/> >>> >> > </route> >>> >> > </camelContext> >>> >> > </blueprint> >>> >> > >>> >> > >>> >> > and here is my pom.xml >>> >> > ------------------------------------ >>> >> > <?xml version="1.0" encoding="UTF-8"?> >>> >> > <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/maven-v4_0_0.xsd"> >>> >> > >>> >> > <modelVersion>4.0.0</modelVersion> >>> >> > >>> >> > <parent> >>> >> > <groupId>org.apache.servicemix.features</groupId> >>> >> > <artifactId>features</artifactId> >>> >> > <version>4.3.0</version> >>> >> > </parent> >>> >> > >>> >> > <groupId>testing.servicemix.example</groupId> >>> >> > <artifactId>ibatistest</artifactId> >>> >> > <packaging>bundle</packaging> >>> >> > <version>1.0-SNAPSHOT</version> >>> >> > <name>iBatis test</name> >>> >> > >>> >> > <properties> >>> >> > <!-- Camel --> >>> >> > <camel-version>2.6.0</camel-version> >>> >> > </properties> >>> >> > >>> >> > <dependencies> >>> >> > <dependency> >>> >> > <groupId>org.apache.camel</groupId> >>> >> > <artifactId>camel-core</artifactId> >>> >> > <version>${camel-version}</version> >>> >> > </dependency> >>> >> > <dependency> >>> >> > <groupId>org.apache.camel</groupId> >>> >> > <artifactId>camel-spring</artifactId> >>> >> > <version>${camel-version}</version> >>> >> > </dependency> >>> >> > <dependency> >>> >> > <groupId>org.apache.camel</groupId> >>> >> > <artifactId>camel-ibatis</artifactId> >>> >> > <version>${camel-version}</version> >>> >> > </dependency> >>> >> > </dependencies> >>> >> > >>> >> > <build> >>> >> > <plugins> >>> >> > <plugin> >>> >> > <groupId>org.apache.felix</groupId> >>> >> > <artifactId>maven-bundle-plugin</artifactId> >>> >> > <configuration> >>> >> > <instructions> >>> >> > >>> >> > <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> >>> >> > >>> >> > <Import-Package>*,org.apache.camel.osgi</Import-Package> >>> >> > >>> >> > >>> <Private-Package>org.apache.servicemix.examples.camel</Private-Package> >>> >> > </instructions> >>> >> > </configuration> >>> >> > </plugin> >>> >> > </plugins> >>> >> > >>> >> > </build> >>> >> > >>> >> > </project> >>> >> > >>> >> > Any clue ??? >>> >> > >>> >> > Thx in advance, >>> >> > >>> >> > Mike >>> >> > >>> >> > >>> >> > 2011/3/22 Charles Moulliard <[email protected]> >>> >> > >>> >> >> Hi Michael, >>> >> >> >>> >> >> Yeap, you must create a bundle containing your camel route, myibatis >>> >> >> config files and place them in a folder which is in the classpath of >>> >> >> the bundle. >>> >> >> >>> >> >> Regards, >>> >> >> >>> >> >> Charles >>> >> >> >>> >> >> >>> >> >> >>> >> >> On Tue, Mar 22, 2011 at 3:25 PM, Michael Dewitte >>> >> >> <[email protected]> wrote: >>> >> >> > Thanks Charles, >>> >> >> > >>> >> >> > but as it's deployed into karaf, does it means I have to create an >>> >> >> > osgi >>> >> >> > bundle, with the sqlmap in it (and the xml def of my CamelContext >>> too >>> >> >> > ?) >>> >> >> ? >>> >> >> > This particular part is not clear to me, and if i find info on the >>> >> >> > ibatis >>> >> >> / >>> >> >> > mybatis part, i can't find this precise detail on how to package / >>> >> >> > deploy >>> >> >> it >>> >> >> > to servicemix... Until now, I only had to deploy the CamelContext >>> >> >> > using >>> >> >> > blueprint directly via the deploy folder... >>> >> >> > >>> >> >> > Thanks for your help, >>> >> >> > >>> >> >> > Mike >>> >> >> > >>> >> >> > >>> >> >> > 2011/3/22 Charles Moulliard <[email protected]> >>> >> >> > >>> >> >> >> Hi Mike, >>> >> >> >> >>> >> >> >> According to the doc, >>> >> >> >> >>> >> >> >> This component will by default load the MyBatis SqlMapConfig file >>> >> >> >> from >>> >> >> >> the root of the classpath and expected named as SqlMapConfig.xml. >>> >> >> >> If the file is located in another location, you would have to >>> >> >> >> configure the configurationUri option on the MyBatisComponent >>> >> >> >> component. >>> >> >> >> >>> >> >> >> Regards, >>> >> >> >> >>> >> >> >> Charles Moulliard >>> >> >> >> >>> >> >> >> Sr. Principal Solution Architect - FuseSource >>> >> >> >> Apache Committer >>> >> >> >> >>> >> >> >> Blog : http://cmoulliard.blogspot.com >>> >> >> >> Twitter : http://twitter.com/cmoulliard >>> >> >> >> Linkedin : http://www.linkedin.com/in/charlesmoulliard >>> >> >> >> Skype: cmoulliard >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> On Tue, Mar 22, 2011 at 2:25 PM, Michael Dewitte >>> >> >> >> <[email protected]> wrote: >>> >> >> >> > Hi, >>> >> >> >> > >>> >> >> >> > one question that seems to be borderline betwwen Camel and SMX >>> : >>> >> >> >> > I want to raise some events (posting messages on a queue) based >>> on >>> >> >> events >>> >> >> >> > occured on table in a database. So, in fact, I want to react >>> upon >>> >> >> insert >>> >> >> >> in >>> >> >> >> > a table. To do so, I thought about a route, using a timer then >>> a >>> >> >> MyBatis >>> >> >> >> > then posting to a queue. >>> >> >> >> > >>> >> >> >> > the route could look like this : >>> >> >> >> > <camelContext xmlns=" >>> http://camel.apache.org/schema/blueprint"> >>> >> >> >> > <route> >>> >> >> >> > <from uri="timer://pollTheDatabase?delay=30000"/> >>> >> >> >> > <to >>> >> >> >> > >>> >> >> >> > >>> uri="mbatis:selectAllNewlyInsertedPeople?statementType=QueryForList"/> >>> >> >> >> > <to uri="activemq://events" /> >>> >> >> >> > </route> >>> >> >> >> > </camelContext> >>> >> >> >> > >>> >> >> >> > I haven't found config sample using SpringConfig nor >>> >> >> >> > blueprints.... My >>> >> >> >> > question is : where do I define the SQLmap... normally it >>> should >>> >> >> >> > be >>> >> >> >> defined >>> >> >> >> > in another xml file, if I was building the route in java... but >>> >> >> >> > how do >>> >> >> if >>> >> >> >> I >>> >> >> >> > want to use a route configured with blueprint ? >>> >> >> >> > >>> >> >> >> > Or maybe am I wrong and should I use a totally different way ? >>> >> >> >> > >>> >> >> >> > Thanks for any help, >>> >> >> >> > >>> >> >> >> > Mike >>> >> >> >> > >>> >> >> >> >>> >> >> > >>> >> >> >>> >> > >>> > >>> > >>> >> >> >
