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

Reply via email to