Skip to content

OpenTracing instrumentation for the Hprose Remote Object Service Engine

License

Notifications You must be signed in to change notification settings

opentracing-contrib/java-hprose

Repository files navigation

java-hprose

OpenTracing instrumentation for the Hprose Remote Object Service Engine

Build Status Maven Central

Quick start

This repo support the opentracing in hprose-java, if hprose-java use http or https as network protocol.

Server side

Using config

  • If you use hprose servlet to open hprose services. Add init-param on the hprose servlet.
<init-param>
    <param-name>invoke</param-name>
    <param-value>io.opentracing.contrib.hprose.HttpServiceTracingInvokeHandler</param-value>
</init-param>

If you use other InvokeHandlers, except HttpServiceTracingInvokeHandler, you should use comma(,) between these InvokeHandlers.

Using code

package hprose.exam.server;
import hprose.common.HproseMethods;
import hprose.server.HproseServlet;
import io.opentracing.contrib.hprose.HttpServiceTracingInvokeHandler;

public class MyHproseServlet extends HproseServlet {
    public String hello(String name) {
        return "Hello " + name;
    }
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        service.use(new HttpServiceTracingInvokeHandler());
        service.add("hello", this);
    }
}
  • By default, HttpServiceTracingInvokeHandler use java ServiceLoader to locate OpenTracing tracer implementation. The implementation must be unique, if more than one implemetations are found, HttpServiceTracingInvokeHandler don't use any of them, but swtich to NoopTracer.
  • if you want to use the particular tracer implementation, you can use HttpServiceTracingInvokeHandler'constructor to set the tracer instance. like this:
service.use(new HttpServiceTracingInvokeHandler(tracer));

Client side

  • Use hprose_for_java_x edition, choose HttpClientTracingExInvokeHandler.
client.use(new HttpClientTracingExInvokeHandler(tracer));
  • Use pure client edition, hprose_client_for_java_x edition, choose HttpClientTracingInvokeHandler.
client.use(new HttpClientTracingInvokeHandler(tracer));
  • Also, like server side, you can use java ServiceLoader to locate OpenTracing tracer implementation, or use HttpClientTracingExInvokeHandler or HttpClientTracingInvokeHandler constructor to set the tracer instance.