I am consuming the webservice https://www.uat.p20.experian.nl/WS_SDPGateway/sdpgateway.asmx?wsdl.
I am getting an error:
ERROR
ERROR 2015-09-21 23:08:04,789 [[experian_spd_sandbox].HTTP_8044.worker.01] org.mule.exception.DefaultMessagingExceptionStrategy:
Message : COULD_NOT_READ_XML_STREAM. Failed to route event via endpoint: org.mule.module.cxf.CxfOutboundMessageProcessor. Message payload is of type: byte[]
Type : org.mule.api.transport.DispatchException
Code : MULE_ERROR--2
Payload : [B#df32cd7
JavaDoc :
Exception stack is:
Unexpected character '>' (code 62) expected '='
at [row,col {unknown-source}]: [7,21] (com.ctc.wstx.exc.WstxUnexpectedCharException)
com.ctc.wstx.sr.StreamScanner:647 (null)
COULD_NOT_READ_XML_STREAM (org.apache.cxf.interceptor.Fault)
org.apache.cxf.databinding.stax.StaxDataBinding$XMLStreamDataWriter:151 (null)
COULD_NOT_READ_XML_STREAM. Failed to route event via endpoint: org.mule.module.cxf.CxfOutboundMessageProcessor. Message payload is of type: byte[] (org.mule.api.transport.DispatchException)
org.mule.module.cxf.CxfOutboundMessageProcessor:163
My goal is just to fix the communication and ensure the webservice can be consumed properly from Mule.
"Failed to route event via endpoint" sounds more like a network then a parse error.
Can you try to curl the wsdl from the box that is executing the Mule flow?
Found it:
Afterall it was a mistake in the XML message itself. In addition I had to remove the metadata I had added during trouble shooting. So in case you run into the same just go back to basic and first validate the XML message ;-)
Thanks all for getting me there.
Related
I'm trying to catch up with the new realease of the wso2ei 7 and 'm following the new tutorial but I keep getting an error when I start the esb again with the following error
Store [PaymentRequestMessageStore]. Could not initialize JMS Message Store. Error:Failed to create InitialContext using factory specified in hash table.. Initial Context Factory:[org.wso2.andes.jndi.PropertiesFileInitialContextFactory]; Provider URL:[null]; Connection Factory:[null]. javax.naming.NoInitialContextException: Failed to create InitialContext using factory specified in hash table. [Root exception is java.lang.ClassNotFoundException: class org.wso2.andes.jndi.PropertiesFileInitialContextFactory not found]
at org.wso2.micro.core.context.CarbonContextDataHolder$CarbonInitialJNDIContextFactoryBuilder.createInitialContextFactory(CarbonContextDataHolder.java:301)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:681)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.init(InitialContext.java:244)
at javax.naming.InitialContext.(InitialContext.java:216)
...
Can anyone help me with that?
[EDIT]
I started the esb from the cmd and i got a diferent error, I don't know if helps or not...
ERROR {org.apache.axis2.transport.jms.JMSConnectionFactoryManager} - Error setting up connection factory : myQueueSender org.apache.axis2.transport.jms.AxisJMSException: Cannot acquire JNDI context, JMS Connection factory : QueueConnectionFactory or default destination : null for JMS CF : myQueueSender using : {transport.jms.CacheLevel=producer, broker_name=wso2mb, transport.jms.ConnectionFactoryType=queue, java.naming.factory.initial=org.wso2.andes.jndi.PropertiesFileInitialContextFactory, transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory, java.naming.provider.url=conf/jndi.properties}
at org.apache.axis2.transport.jms.JMSConnectionFactory.initJMSConnectionFactory(JMSConnectionFactory.java:188)
at org.apache.axis2.transport.jms.JMSConnectionFactory.(JMSConnectionFactory.java:152)
at org.apache.axis2.transport.jms.JMSConnectionFactoryManager.loadConnectionFactoryDefinitions(JMSConnectionFactoryManager.java:89)
...
While working through the EI Asynchronous Messaging tutorial, you will get this ClassNotFound exception if you don't do the following first:
Download WSO2 Message Broker. The path to this folder is referred to as MB_HOME throughout this tutorial.
Add the following JAR files from the MB_HOME/wso2/broker/client-lib/ directory to the MI_TOOLING_HOME/Contents/Eclipse/runtime/microesb/lib/ (in MacOS) or MI_TOOLING_HOME/runtime/microesb/lib (in Windows) directory.
andes-client-*.jar
geronimo-jms_1.1_spec-*.jar
org.wso2.securevault-*.jar
For me on OSX, the MI_TOOLING_HOME is /Applications/IntegrationStudio.app.
My situation:
I create via OTRS Admin Backend a custom webservice:REST
added an custom invoker on GenericInterface::Invoker::ModuleRegistration
added new invoker:REST Event-Trigger: TicketSlaveLinkAdd
configured otrs as requester HTTP::REST Host as: http://myhost.com
controller mapping: /LinkAdd/:TicketID
standard command: PATCH
My Problem:
System Log returns:
DebugLog error: Summary: HTTP::REST Error while determine Operation for request URI '/LinkAdd'. Data : No data provided.
DebugLog error: Summary: Request could not be processed Data : HTTP::REST Error while determine Operation for request URI '/LinkAdd'..
DebugLog error: Summary: Returning provider data to remote system (HTTP Code: 500) Data : HTTP::REST Error while determine Operation for request URI '/LinkAdd'..
Maybe somebody know about my problem and can help :)
The Error while determine Operation text points out that OTRS is the incoming call is not able to determine the Operation for the incoming URI; please check your data mapping.
I'm using MPGW service which will hit the CICS service and return back the response.
This is my flow. UI --> DP MPGW gateway --> MPGW Service --> CICS service.
In case of "No data Found" response from CICS, I just want to set the error code as 100 and message as "No data found" and pass on to UI. But everytime datapower is return 500 Internal server error to UI.
I'm using errorHandler.xslt to check the fault code from CICS and setting the error code and error message.
Is there something I need to change the dp:response-header('x-dp-response-code')? If so how to do this?
Note: Process Backend error : 'On' in both the MPGW(gateway and service).
Try this:
If a response contains 500 not found error. Do a dp:reject at the response rule.This will take control to error rule. At error rule, configure an xslt and set below values:
<dp:set-variable name="'var://service/error-protocol-response'" value="'100'" />
<dp:set-variable name="'var://service/error-protocol-reason-phrase'" value="'No Data Found'" />
As per https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014432297 you want:
Within an Error Rule:
Within a Response Rule:
That should do the trick for an MPGW I believe.
I've got a Web Service Task in my Control Flow.
The actual Web Service type is void. For testing purposes, the Web Service just throws a new Exception, with a message.
I've got the task outputting to a variable User::ServiceResponse
The Failure path goes to a Send Mail Task, which uses the variable User::ServiceResponse... however, the email received does not contain any text.
When the package executes, the Immediate Window does show a long error, which in part contains my exception message. "Adams Error Message" towards the very end.
SSIS package "....\WebProfile.dtsx" starting.
Error: 0xC002F304 at SVC, Web Service Task: An error occurred with the following error message:
"Microsoft.SqlServer.Dts.Tasks.WebServiceTask.WebserviceTaskException:
The Web Service threw an error during method execution.
The error is: System.Web.Services.Protocols.SoapException:
Server was unable to process request. --->
System.Exception: Adams Error Message
--- End of inner exception stack trace ---.
Without writing a lot of custom script... how can I get the exceptions from my Web Service Task into the Send Mail Task?
In our Symfony2 application we query an external API for a certain service we provide. This API (let's call it Acme API) sometimes throws error messages that we forward to Graylog2 via Monolog and Gelf to keep track of outages. Every error is logged on error level with $logger->err().
The messages are shown in the normal message pool, but the custom stream that collects these API error messages isn't showing any message at all.
So my main question is: Why is Graylog refusing to show messages in the stream and what can we do to change that behaviour?
Configurations
There is a total of 35 streams at the moment (This because we have a bunch of applications on our servers).
Every message that is given to Monolog has the same pattern:
Acme API Error on "{user action}": {error description}. Additional information: "{more information provided from the API}" on server "{web server name}" and domain "{domain}" for user "{session ID}"
The Graylog stream rules are as follows:
Host (regex): ^((?!mycompany-staging).)*$ // Needed to show only logs from the live servers
Facility: app
Full Message (regex): Acme API.*
(We've also tried to set the Full Message regex to .*Acme API.* and Acme API Error.*, but none of these worked)
The monolog configuration is as follows:
// config_prod.yml
// ...
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
level: debug
nested:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
graylog:
type: gelf
level: warning
publisher:
hostname: mycompany-monitoring.mycompany.ch
// ...
Seemed to be a problem with Graylog2 itself, the stream started working normally after updating Graylog to the newest version and recreating the stream.