Hi,Willem. this is my RouteBuilder: --------------------------------------------------------------- public class MobileRouteBuilder extends RouteBuilder implements PropertyConstants {
private String port; public void setPort(String port) { this.port = port; } private Tracer tracer = new Tracer(); /** * 设置tracer的开关 * * @param exchange * tracer * @return String * */ public void setTracing(Exchange exchange) { Message in = exchange.getIn(); String enabletracer = (String) in.getHeader("tracer"); if (enabletracer.equalsIgnoreCase("true")) { tracer.setEnabled(true); in.setBody("tracer on"); } else { tracer.setEnabled(false); in.setBody("tracer off"); } } @Override public void configure() throws Exception { // 通过手动新建tracer并设置setEnabled(false),能够在路由中加入一个不启用的tracer tracer.setEnabled(false); getContext().addInterceptStrategy(tracer); Set<String> keyset = IntegrationServiceUtil.integrationServiceMap.keySet(); Map<String, String> routeMap = new HashMap<String, String>(); String value = null; StringBuffer strbuf = new StringBuffer(); for (String k : keyset) { value = IntegrationServiceUtil.integrationServiceMap.get(k); if (value != null) { URL url = new URL(value); if (url.getPort()<0) { strbuf.append("netty4-http:") .append(url.getProtocol()).append("://").append(url.getHost()).append(":80").append(url.getFile()) .append("?" + "bridgeEndpoint=true&throwExceptionOnFailure=false"); } else { strbuf.append("netty4-http:").append(value) .append("?" + "bridgeEndpoint=true&throwExceptionOnFailure=false"); } routeMap.put(k, strbuf.toString()); } value = null; strbuf = new StringBuffer(); } from("netty4-http:http://0.0.0.0:" + port + "/rest?" + "bridgeEndpoint=true&matchOnUriPrefix=true") .process(new LogProcessor()) .process(new UTF8ToGBKProcessor()) .process(new AdapterProcessor()) .process(new IfAddUccodeProcess()) .choice() .when(header("serviceNickName").isNull()) .to(routeMap.get("business")) .when(header("serviceNickName").isEqualTo(PRODUCTNICK)) .to(routeMap.get("i6p")) .when(header("serviceNickName").isEqualTo(WORKFLOWNICK)) .to(routeMap.get("workflow")) .when(header("serviceNickName").isEqualTo(BUSINESSNICK)) .to(routeMap.get("business")) .when(header("serviceNickName").isEqualTo(NETCALLNICK)) .to(routeMap.get("netcallservice")) .when(header("serviceNickName").isEqualTo(AUTHNICK)) .to(routeMap.get("EnterpriseInfoService")) .when(header("serviceNickName").isEqualTo(UPDATENICK)) .to(routeMap.get("NetCallUpdateService")) .when(header("serviceNickName").isEqualTo("LoopbackDetection")) .bean(new LoopbackDetectionEndpoint()) .when(header("serviceNickName").isEqualTo("SetTracing")) .beanRef("mobileRouteBuilder", "setTracing") .endChoice() .end(); from("servlet:///?matchOnUriPrefix=true&bridgeEndpoint=true") .process(new ServletAdapterProcessor()) .choice() .when(header("serviceNickName").isEqualTo(AUTHNICK)) .process(new SplitProcessor()) .choice() .when(header("EnterpriseInfoServiceRoute").isEqualTo("getauthusers")) .to(routeMap.get("EnterpriseInfoService")) .bean(new GetNCInfoEndpoint()) .when(header("EnterpriseInfoServiceRoute").isEqualTo("authdevices")) .process(new IfCanAuthProcessor()) .choice() .when(header("CanAuth").isEqualTo("true")) .to(routeMap.get("EnterpriseInfoService")) .endChoice() .when(header("EnterpriseInfoServiceRoute").isEqualTo("other")) .to(routeMap.get("EnterpriseInfoService")) .endChoice() .when(header("serviceNickName").isEqualTo(PRODUCTNICK)) .to(routeMap.get("i6p")) .when(header("serviceNickName").isEqualTo("properties")) .bean(new PropertyEndpoint()) .endChoice() .end(); } } --------------------------------------------------- And this is deployed in the Tomcat. And we find that it maybe an issue of netty: http://blog.csdn.net/haoel/article/details/2224055 -- View this message in context: http://camel.465427.n5.nabble.com/Why-so-many-port-used-when-I-use-camel-netty4-http-tp5765433p5765797.html Sent from the Camel - Users mailing list archive at Nabble.com.