Generic Service

    Generic service in dubbo

    The implementation of the generic interface is mainly used when there is no API interface and model class on the server side. All POJOs in the parameters and return values are represented by the Map and are usually used for framework integration. For example, to implement a universal remote service Mock framework, handle all service requests by implementing the GenericService interface.

    In Java code, implement GenericService interface:

    package com.foo;
    public class MyGenericService implements GenericService {
    
        public Object $invoke(String methodName, String[] parameterTypes, Object[] args) throws GenericException {
            if ("sayHello".equals(methodName)) {
                return "Welcome " + args[0];
            }
        }
    }
    

    Export generic implements via Spring

    Declared in the Spring configuration file:

    <bean id="genericService" class="com.foo.MyGenericService" />
    <dubbo:service interface="com.foo.BarService" ref="genericService" />
    

    Export generic implements via API

    ...
    // use org.apache.dubbo.rpc.service.GenericService can replace all implements
    GenericService xxxService = new XxxGenericService();
    
    // The instance is very heavy, which encapsulates all the registration center and service provider connection, please cache
    ServiceConfig<GenericService> service = new ServiceConfig<GenericService>();
    // weak type service interface name
    service.setInterface("com.xxx.XxxService");  
    service.setVersion("1.0.0");
    // point to a generic serivce instance
    service.setRef(xxxService);
    
    // export service to registration center
    service.export();