들어오는 WebService 요청의 원격 IP 주소를 기록하려면 Camel에서 간단한 Http-Proxy를 구현해야합니다.Intellij 외부에서 Camel을 실행하면 HttpServletRequest 캐스팅이 실패합니다.
from("jetty:http://0.0.0.0:" + 8081 + "?matchOnUriPrefix=true&optionsEnabled=true")
.streamCaching()
.process(wiresharkInboundLogger)
.to("jetty:http://localhost:" + 8080 + "?bridgeEndpoint=true&throwExceptionOnFailure=false");
을 그리고 난 내 프로세서 "wiresharkInboundLogger"이 :
그래서 난 내 경로가 정의되어 Inttelij 내부에서 실행되는 경우가 마법처럼 작동
@Override
public void process(Exchange exchange) throws Exception {
// HttpServletRequest
HttpServletRequest request = exchange.getIn().getBody(HttpServletRequest.class);
if (request == null) {
LOG.warn("No HttpServletRequest available!");
} else {
LOG.info("Client IP: " + request.getRemoteAddr());
}
}
합니다. UI 명령 ("java -jar my-camel-app.jar")을 통해 Intellij 외부에서 동일한 응용 프로그램을 실행하자마자 HttpServletRequest의 캐스팅은 SOAP UI의 동일한 요청에 의해 트리거 될 때 "null"을 반환합니다.
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>my.wireshark.Wireshark</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
어떤 아이디어가 무슨 이상한 동작이 발생할 수 있습니다
나는 다음과 같은 받는다는 - 플러그인 항아리를 포장했습니다?
당신이 그것을 망칠 수있는 것처럼 uber JAR을 만드는 데주의하십시오. 이 FAQ를 참조하십시오 : http://camel.apache.org/how-do-i-use-a-big-uber-jar.html –
maven-shade-plugin으로 전환되었습니다. 변경 없음. 여전히 HttpServerletRequest의 캐스팅은 Intellij 외부에서 null을 반환합니다. –