Oh and use psoft-sql as the component name instead of sql, eg to("psoft-sql:xxxx")
On Wed, Aug 1, 2018 at 9:24 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: > Hi > > You have set the datasource already on the sql component, so in your > Camel sql endpoint you should not have ?dataSource=#xxxx - that can be > removed > > On Wed, Aug 1, 2018 at 8:53 PM, John F. Berry > <bohnje...@yahoo.com.invalid> wrote: >> OK.. So I attached the override to my route... but Camel execution now >> complains I do not have a valid DataSource: >> >> >> >> public class MyRouteBuilder extends RouteBuilder { @Override >> public void configure() throws Exception { >> BasicDataSource basicDataSource = new BasicDataSource(); >> >> basicDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); >> >> basicDataSource.setUrl("jdbc:sqlserver://XXXXXX:52739;databaseName=XXXX;"); >> basicDataSource.setUsername("XXXX"); >> basicDataSource.setPassword("XXXXX"); >> >> SqlComponent sqlComponent = new SqlComponent(); >> sqlComponent.setDataSource(basicDataSource); >> >> getContext().addComponent("psoft-sql", sqlComponent); >> >> >> from("mllp://XXXXXX:8888") >> .log("..Received HL7 message with control id >> ${header.CamelMllpMessageControlId}") >> .convertBodyTo(String.class) >> .unmarshal() >> .hl7(false) >> .process(new Processor() { >> public void process(Exchange exchange) throws Exception { >> Message message = exchange.getIn().getBody(Message.class); >> ca.uhn.hl7v2.util.Terser terser = new Terser(message); >> String obx5 = terser.get("/.OBX-5-5"); >> String EDMId = terser.get("/.OBR-3") + ".pdf"; >> String voucher = terser.get("/.OBR-2"); >> >> byte[] decoded = Base64.getDecoder().decode(obx5); >> exchange.getOut().setBody(decoded); >> exchange.getOut().setHeader("voucher", voucher); >> exchange.getOut().setHeader("CamelFileName", EDMId ); >> } >> } ) >> .log("..Processed voucher ${header.voucher} to file >> ${header.CamelFileName}") >> .to("file:target/messages/others") >> .to("sql:INSERT INTO lawsonprod.PeopleSoftVCR (Voucher, Facility, >> image) VALUES ('12345', '1', 'something')?dataSource=#psoft-sql" ) >> ; >> >> } >> >> } >> >> >> error is: >> No bean could be found in the registry for: psoft-sql of type: >> javax.sql.DataSource >> >> >> On Tuesday, July 31, 2018, 2:04:32 PM EDT, John F. Berry >> <bohnje...@yahoo.com> wrote: >> >> Nevermind... found to import org.apache.camel.component.sql.SqlComponent >> >> On Tuesday, July 31, 2018, 1:27:58 PM EDT, John F. Berry >> <bohnje...@yahoo.com.INVALID> wrote: >> >> Also, in compiling in maven, it doesn't find "SQLComponent". Isn't that >> part of camel-sql? or am I configuring a different entity? >> >> On Tuesday, July 31, 2018, 12:29:49 PM EDT, John F. Berry >> <bohnje...@yahoo.com.INVALID> wrote: >> >> >> Sorry, that was a bit of an incomplete thought: >> In another java IDE that came with a product of ours we use this driver: >> com.microsoft.sqlserver.jdbc.SQLServerDriver >> as well as this URI: >> jdbc:sqlserver://blablabla:52739;databaseName=dbName; >> >> So what is the choice of using a "derby" driver? I cannot find a writeup >> about it. >> >> On Tuesday, July 31, 2018, 12:17:09 PM EDT, John F. Berry >> <bohnje...@yahoo.com> wrote: >> >> Thanks again Quinn, >> What is the "derby" element in this solution? I can't seem to find >> information in this in my searches. >> I'm trying to analyze the parameter string in the .setURL line and the >> values within. >> >> On Tuesday, July 31, 2018, 10:55:42 AM EDT, Quinn Stevenson >> <qu...@pronoia-solutions.com> wrote: >> >> Forgot to mention to make sure that when you use this component, use the >> component name that you register it with - in this example I used “my-sql”. >> >>> On Jul 31, 2018, at 8:49 AM, Quinn Stevenson <qu...@pronoia-solutions.com> >>> wrote: >>> >>> There’s a few ways to go about this, but I’d probably start out with doing >>> it in the configure method of the RouteBuilder - something like the >>> following (note - I didn’t test this so I don’t even know if it compiles). >>> >>> @Override >>> public void configure() throws Exception { >>> BasicDataSource basicDataSource = new BasicDataSource(); >>> basicDataSource.setDriverClassName("org.apache.derby.jdbc.EmbeddedDriver"); >>> basicDataSource.setUrl("jdbc:derby:memory:orders;create=true"); >>> basicDataSource.setUsername(""); >>> basicDataSource.setPassword(""); >>> >>> SqlComponent sqlComponent = new SqlComponent(); >>> sqlComponent.setDataSource(basicDataSource); >>> >>> getContext().addComponent("my-sql", sqlComponent); >>> >>> from() >>> ... >>> } >>> HTH >>> >>>> On Jul 30, 2018, at 9:45 AM, John F. Berry <bohnje...@yahoo.com.INVALID >>>> <mailto:bohnje...@yahoo.com.INVALID>> wrote: >>>> >>>> Thanks Quinn for the helping hand. >>>> >>>> I've been looking for examples of how to declare the servername/instance >>>> name, username password to utilize a MS SQL endpoint. Looking at the >>>> Apache Camel: SQL Component page, it shows utilizing the declared object >>>> like "mydbconnection" that is the named DataSource option, and shows all >>>> on what you can throw through that connection... except seems to skip over >>>> how to specify connection criteria. It does reference the DataSource >>>> option as a pointer to look up in the "registry" but I don't know if that >>>> is an inherited existing entity it's talking about or the need to declare >>>> a new registry and import a form of camel registry or something. The only >>>> examples where I've seen servername, un/pw declared in an example was in a >>>> Spring one. I don't know if we want to "un-translate" a Spring example, >>>> but point me in the direction of where I should natively set these things >>>> in Java DSL. The above mentioned page even says "This component uses >>>> spring-jdbc behind the scenes for the actual SQL handling", so I figured >>>> that is why I cannot seem to get away from Spring. >>>> When I look at the Apache Camel: SQL Example( >>>> http://camel.apache.org/sql-example.html >>>> <http://camel.apache.org/sql-example.html> ) page, it talks about "In the >>>> camel-context.xml file in the src/main/resources/META-INF/spring folder we >>>> have the Spring XML file to setup and configure the database" >>>> >>>> I see connection parameters set like in this other example: >>>> >>>> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" >>>> destroy-method="close"> >>>> < property name = "driverClassName" value = >>>> "org.apache.derby.jdbc.EmbeddedDriver" /> >>>> >>>> < property name = "url" value = "jdbc:derby:memory:orders;create=true" /> >>>> >>>> < property name = "username" value = "" /> >>>> >>>> < property name = "password" value = "" /> >>>> >>>> </bean> >>>> >>>> >>>> but not declared in the Java DSL, if that's even possible.. Perhaps >>>> .setheaders() ? but then.. what are the paramater names? >>>> >>>> >>>> Sorry.. I know it's a bit of a "thrashing" response... >>>> >>>> >>>> >>>> On Monday, July 30, 2018, 10:43:34 AM EDT, Quinn Stevenson >>>> <qu...@pronoia-solutions.com <mailto:qu...@pronoia-solutions.com>> wrote: >>>> >>>> >>>> >>>> >>>> >>>> From my experience, I’ve always been able to to more with the Java DSL >>>> than with Spring. I think routes written using the Spring XML are easier >>>> to read than routes written the Java DSL, but that’s just me. >>>> >>>> If you could post you’re Spring XML that you’re trying to translate, I’m >>>> sure we can help with that. >>>> >>>>> On Jul 30, 2018, at 8:00 AM, John F. Berry <bohnje...@yahoo.com.INVALID >>>>> <mailto:bohnje...@yahoo.com.INVALID>> wrote: >> >>>>> >>>>> I've been perusing ways to declare connection to a MS SQL server. There >>>>> are plenty of Spring examples.. but how about Java DSL? I have been >>>>> attempting to utilizing the JDBC endpoint provided though camel-sql.. but >>>>> I cannot seem to either find documentation of how to place a >>>>> configuration file with an unknown name in an unknown location in the >>>>> project, or declare it in-line. Been looking at setting it first in the >>>>> "camel registry", but no luck so far. >>>>> I did not include any code, since I have nothing functional or "in >>>>> progress" to show for my efforts. I'm not to the point I need to form >>>>> any sort of SQL statement yet, since I cannot establish a connection.It >>>>> seems so simple, but I cannot find how to simply declare server:port, >>>>> un/pw without bringing a Spring context into the mix. If that is needed >>>>> to satisfy the camel vanilla SQL endpoint needs, how do I tie that into >>>>> the Java DSL route I've already got going? I went the Java DSL route >>>>> simply because some other endpoints didn't have a straight forward Camel >>>>> Spring solution to them. Is this mixed environment normal? Is there >>>>> really not a choice to keep a route "clean" in one coding style or the >>>>> other? >>>>> Thanks! >>> > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2