Motan Restful Server分析

2020-07-17  本文已影响0人  clive0x

入口点在RestfulServletContainerListener类,通过resteasy.injector.factory设置RestfullInjectorFactory,对方法进行动态修改(类似invocationhandler),JAX-RS调用动态修改为对Provider调用。

调协resteasy.providers设置@Provider,明确错误输出。(与之相反的输入为@Consumer)。

在Server初始化时,调用server.getDeployment().getRegistry().addResourceFactory(new ProviderResource<T>(provider));

加入motan定制ResourceFactory,ResourceFactory主要用于加载Resource对应的被代理类。

public void registered(ResteasyProviderFactory factory) {

        factory.getInjectorFactory().createPropertyInjector(resourceClass, factory).inject(provider.getImpl());

    }

    public Object createResource(HttpRequest request, HttpResponse response, ResteasyProviderFactory factory) {

        return provider;

    }

总体还是使用RestfullInjectorFactory提供的MethodInjector和PropertyInjector,动态替代method.invoke和resource支撑类.

NettyEndpointFactory代码更明显,使用RestfulInjectorFactory动态修改方法和支撑类。

上一篇 下一篇

猜你喜欢

热点阅读