I was thinking about invocation of services with 'interface.esb' from Java code. Right now (if I understand it correctly) I need to create an interface with a single method and typed parameter and return value so I can do something like this in the code

sorry for not explaining it properly. I meant a little bit different scenario.

Let's suppose we have 2 camel services, each with interface.esb interface. If I would want to call those services from Java code using @Reference then I'd need to provide two Java interfaces that would conform to input/output message formats. My idea was to provide generalized interface that could be used for access to any such service - technically we can speak about access to BPM and other service implementations as well.

You do not need to declare distinct interfaces for each service. The services themselves are named. The default name for a service declared using @Service or injected using @Reference is the simple name of the class, but you can specify a name for the service, as in the code snippet above. This is known to work.

The only question is whether or not a service can be declared using generics (which I suspect is OK, but haven't actually tested).