How does Apache Camel AS2 handle async mdn - spring-boot

i have a very simple route as a as2 server:
from("as2://server/listen?serverPortNumber=7777&requestUriPattern=/").id("as2Listener").bean(AS2Controller.class);
when i receive an async mdn from my partner, I see in the log that the AS2 Server components receive an incoming as2 request and it process the request, but it doesn't get into the process method in my controller class (normal as2 messages from my partner gets process in the process method in the controller class no problem). Can anyone help with where the mdn message gets processed in the whole flow?
Thanks!
Edit:
Normal AS2 Request can get process fine, but when I receive a MDN message, it doesn't get passed into my controller, instead there is this error before and it quits before passing it over:
The Error Message I get when I receive a mdn message

If you are developing the code on Spring Boot, you can call bean method by "as2controller" (which you give the name) or you can autowire the class and call it directly.
#Autowired
AS2Controller as2controller ;
//.bean(as2controller);
More info, https://camel.apache.org/components/latest/bean-component.html

Related

What is the purpose of HandlerExtensions.ConnectHandle ConnectHandler<T>() method?

Xmldoc states:
Adds a message handler to the service bus for handling a specific type
of message
But it does not require endpoint name. How then does it work? I tried this method, but nothing happened.
Is there any possibility to add handlers dynamically, while bus is running?
By connecting a handler to the bus after it has been started, messages can be sent to the bus's address directly. This is particularly useful for things like responses to requests, which should not be published and are sent immediately back to the endpoint.
When using bus.ConnectHandler(context => {...}) to add a handler to the bus dynamically, no subscriptions or exchange bindings are created on the broker. It's only possible to receive messages which are directly sent to the endpoint.
When a message is sent from the bus, such as a request, the SourceAddress is added to the message header. If a request is sent, the ResponseAddress is also set. A fault address can also be specified if you want to use a non-dynamic endpoint to capture faults (such as a failed command that is not awaited, IE, fire and forget) so that faults can be triaged and handled appropriately by another persistent endpoint.

Why not spring amqp provider a sendAndAsyncReceive method signature?

Sometime we need send a message asynchronous and provide a callback when message result asynchronous returned.
Now,there is only blocking method sendAndReceive;why not provider a sendAndAsyncReceive method by pass a callback arg or return a listentablefuture?
Because nobody has asked for it.
You can use send() and configure an async consumer (SimpleMessageListenerContainer) to receive the replies.
Feel free to open a new feature JIRA issue or, even better, consider contributing.
EDIT:
Here's a gist with sample code.

RabbitTemplate not returning the message back to caller

I have project microservice where I have restful call which calls the endpoint in Service microservice.
Currently I have a problem where Service return the message back to API in the middle RabbitTemplate's method handleDelivery() not able to pass on the message to the caller back in the restful program. I.e. the message is disappearing somewhere never returns back.
So I am stuck and not able to proceed with this.
How do I fix/over come this problem.
Your help is highly appreciated.
thank you.
~Shyam

How to filter Request Response before reaching to Web Api controller

Hi I am working with Web Api 2, is their any way I can handle request and response before reaching to the API controller.
You may be looking for a DelegatingHandler. These are HTTP Message Handlers that can process the request before it reaches the Controller and can also process the response on the way out of the pipeline. Delegating Handlers can also return the response themselves without calling the rest of the pipeline. You can read about Delegating Handlers here.

How does WCF RIA Services handle authentication/authorization/security?

Since no one answered this question:
What issues to consider when rolling your own data-backend for Silverlight / AJAX on non-ASP.NET server?
Let me ask it another way:
How does WCF RIA Services handle authentication/authorization/security at a low level?
e.g. how does the application on the server determine that the incoming http request to change data is coming from a valid client and not from non-desirable source, e.g. a denial-of-service bot?
From my investigation, all calls into the RIA service classes are forced through a custom IOperationInvoker class (enforced by a custom IOperationBehavior class). This invoker calls into DomainService to have the operation executed.
Before it is executed, the method call is validated any/all AuthorizationAttribute attributes marked on the operation in question. Each AuthorizationAttribute (two provided are RequiresAuthenticationAttribute & RequiresRoleAttribute) is given an opportunity to accept or reject the call via the abstract IsAuthorized method.
If any of these attributes returns something other than "AuthorizationResult.Allowed", an UnauthorizedAccessException exception is thrown with the ErrorMessage from the AuthorizationResult returned.

Resources