在ApacheServiceMix7.0.0中,我使用Blueprint定义了以下路由:
<reference id="dataSource" interface="javax.sql.DataSource" filter="(dataSourceName=connectuserdata)" />
<bean id="sql" class="org.apache.camel.component.sql.SqlComponent">
<property name="dataSource" ref="dataSource" />
</bean>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<package>com.focuscura</package>
<dataFormats>
<!-- here we define a Json data format with the id jack and that it should use the TestPojo as the class type when
doing unmarshal. The unmarshalTypeName is optional, if not provided Camel will use a Map as the type -->
<json id="userdata" library="Jackson" />
</dataFormats>
<route id="connect.userdata_create">
<from uri="jetty:http://localhost:8881/userdata?httpMethodRestrict=POST"/>
<unmarshal ref="userdata"/>
<!--<process ref="scalaUserDataProcessor"/>-->
<log message="Received new userdata" />
<to uri="sql:INSERT INTO public."UserData" (lastname, firstname) VALUES (:#lastname , :#firstname)"/>
</route>
<route id="connect.userdata_get2">
<from uri="jetty:http://localhost:8881/userdata2?httpMethodRestrict=GET"/>
<to uri="sql:SELECT * FROM public."UserData" WHERE id = :#id"/>
<!--<process ref="scalaUserDataProcessor"/>-->
<marshal ref="userdata"/>
</route>
</camelContext>
按照本文所述的说明将数据源安装为独立的服务:如何安装postgresqljdbc以在Karaf OSGi中工作?
这很好用!我可以将JSON发布到Jetty URL并将其插入到数据库中。但是,当我试图从该endpoint获取数据时,我得到以下错误
org.osgi.service.blueprint.container.ServiceUnavailableException: The Blueprint container is being or has been destroyed: (&(dataSourceName=connectuserdata)(objectClass=javax.sql.DataSource))
at org.apache.aries.blueprint.container.ReferenceRecipe.getService(ReferenceRecipe.java:241)
at org.apache.aries.blueprint.container.ReferenceRecipe.access$000(ReferenceRecipe.java:56)
at org.apache.aries.blueprint.container.ReferenceRecipe$ServiceDispatcher.call(ReferenceRecipe.java:306)
at Proxyb6abdd30_6f59_4e89_a419_c4ff0558aa62.equals(Unknown Source)
at java.util.WeakHashMap.eq(WeakHashMap.java:287)
at java.util.WeakHashMap.get(WeakHashMap.java:401)
at org.springframework.jdbc.support.SQLErrorCodesFactory.getErrorCodes(SQLErrorCodesFactory.java:204)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:140)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.
奇怪的是,当我将
替换为
时,它再次运行良好,并且返回了一个用户nr2的小JSON。
对于如何解决这个问题有什么提示吗?
问题不是真的在我的路线或骆驼。它是由PostgreSQL引起的。通过在路由中使用一个参数,我需要提供一个显式的类型转换。
要使其工作,我需要将::bigint添加到路由中的参数:sql:select lastname FROM public。“userdata”;其中id=:#id::bigint?datasource=datasource&allowNamedParameters=true
由于某种原因,来自Postgres的错误被Camel-sql吞噬了,我得到了关于Datasource被破坏的奇怪消息。
将路由链接到参数 显示特定产品详细信息的组件的路由需要该产品ID的路由参数。我们可以使用以下实现: 注意:product-details路由的路径中的 ,它将参数放在路径中。例如,要查看ID为5的产品的产品详细信息页面,必须使用以下URL:localhost:3000/product-details/5 注意,指令传递一个数组,该数组指定路径和路由参数。或者,我们可以使用JS跳转: Product
我使用的是Camel2.15版本,我尝试通过一个名为length of account number的额外属性作为交换,并尝试与路由中的value匹配,但它没有工作。 处理器: public void processMortgage(final Exchange Exchange)引发ServiceException{MessageContentsList MessageContentsList=
我正在尝试使用camel-actiemq依赖关系,并设置一个正在监听actiemq队列的服务。当我试图设置骆驼路由中的唯一连接时,我使用的endpoint是: “activemq:mailq?用户名=管理员 我的问题是activemq依赖关系正在解除故障切换“localhost:61616”的约束,因为它没有重新计算brokerURL参数。 我正在尝试连接到一个部署在openShift服务器上的队
我可以检查对象中的值并基于此进行路由吗(就像写到不同的文件一样?)。我可以在pojo中添加注释以避免final json中的字段 我想到了将object转换为json,然后发送到Queue。然后我可以使用jsonpath进行条件路由。但是,我怎样才能从final JSON中省略一个字段呢?
我有几条骆驼路由,在从DB读取数据时,我在Exchange对象中设置了一个头,其中一条路由的名称为FILE_NAME。作为下一步,这条路由将进一步转到我的FTP路由,文件应该在那里下载。问题是FTP路由没有接收到我正在使用的contentEnricher的前一条路由的头。这是官方行为:http://camel.apache.org/content-enricher.html。但是,可以动态构造FT
我在一个测试类中配置了一个简单的路由如下所示: 这是我执行上述代码时camel生成的跟踪片段: 我可以做什么来简单地下载文件?