Hi Claus,
thx for opening the ticket. Indeed, this should occur rarely... however,
of course I can set headers with curl. But I do not set them as the
System of the supplier does not set them either. That is, I am
simulating the call...
On 29.03.2011 01:57, Claus Ibsen wrote:
btw you can add a HTTP header to the curl command which should allow
you to not use the workaround.
On Tue, Mar 29, 2011 at 8:54 AM, Claus Ibsen<[email protected]> wrote:
Hi Knut
Thanks for reporting. I have created a ticket
https://issues.apache.org/jira/browse/CAMEL-3816
On Mon, Mar 28, 2011 at 9:32 PM, Knut Enners<[email protected]> wrote:
Finally, I found the error - thanks for helping anyway ;)
It's a camel bug (2.4., 2.6) affecting the classes
org.apache.camel.component.http.DefaultHttpBinding
org.apache.camel.component.http4.DefaultHttpBinding
method readRequest needs to check null-values, as POST requests may not set
any headers.
...
Map<String, Object> headers = message.getHeaders();
Enumeration names = request.getHeaderNames();
while (names.hasMoreElements()) {
String name = (String)names.nextElement();
Object value = request.getHeader(name);
...
As a workaround you need to write a custom http binding as described in the
camel-component docs. The attached file works for me, calling super() in
case there are headers, otherwise we need to leave out fancy header
evaluation and message transformation (we do not have access to some private
props)
cheers, Knut
On 23.03.2011 02:46, Knut Enners wrote:
Hi,
basically I need to implement a service to which xml-documents are send
via http post. Afterwards they should get routed to a JMS queue.
Problem: whatever I post to the service results in the Exception:
(curl -v -d file.xml 'http://localhost:4443/to2-service/sendMessage' ;
http get requests are answered)
java.lang.ArrayIndexOutOfBoundsException: 1
at
org.apache.camel.component.http.DefaultHttpBinding.populateRequestParameters(DefaultHttpBinding.java:159)[198:org.apache.camel.camel-http:2.6.0.fuse-00-00]
at
org.apache.camel.component.http.DefaultHttpBinding.readRequest(DefaultHttpBinding.java:100)[198:org.apache.camel.camel-http:2.6.0.fuse-00-00]
at
org.apache.camel.component.http.HttpMessage.<init>(HttpMessage.java:46)[198:org.apache.camel.camel-http:2.6.0.fuse-00-00]
...
Here is a simplified version that leads to the same error:
<?xml version="1.0" encoding="UTF-8"?>
<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="jetty:http://0.0.0.0:4443/service?matchOnUriPrefix=true"/>
<log message="Copying ${file:name} to the output directory"/>
<to uri="file:data/output"/>
</route>
</camelContext>
</blueprint>
Servicemix: apache-servicemix-4.3.0 and apache-servicemix-4.3.1-fuse-00-00
I already played around with converting to String or StreamSource and
setting options like disableStreamCache... without luck.
With apache-servicemix-4.2.0 everything works fine, but I run into
following issue on the JMS side:
http://servicemix.396122.n5.nabble.com/java-lang-ClassNotFoundException-org-apache-camel-component-jms-JmsComponent-when-using-camel-from-u-td3413867.html
How can I get around this? Have I configured s.th. wrong, should I
implement the stuff with servicemix-xyz components or try to get
activemq running with apache-servicemix-4.2.0?
thanks und regards,
Knut
--
Claus Ibsen
-----------------
FuseSource
Email: [email protected]
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/