我正在尝试使用阿帕奇骆驼开发休息服务。我的项目是部署在雄猫上的春季 mvc 战争。
我不想使用 apache cxf (cxf servlet)。
public class SampleRouter extends RouteBuilder {
@override
public void configure() throws Exception {
from("cxfrs://http://localhost:1234/sample")
.process (new Processor() {
public void process(Exchange exchange) throws Exception {
System.out.println("test");
}
})).setBody(constant("SUCCESS"));
}
}
@Path("/sample")
public class SampleResource {
@GET
public void test() {
}
}
web.xml 有 dispatcherservlet、contextloaderlistener。
dispatcher-servlet.xml 具有 mvc:annotation-drivem, context:component-scan,
<camelContext id="server" trace="true" xmlns="http://camel.apache.org/schema/spring">
<contextScan />
</camelContext>
pom.xml 有 camel-core, camel-cxf, camel-stream, cxf-rt-transports-http-jetty, cxf-rs-frontend-jaxrs, camel-spring, spring-webmvc, spring-web, spring-context.
Tomcat 在 8080 上运行,服务器启动时似乎没有例外。但是,我尝试点击网址(http://localhost:1234/sample
),似乎什么也没发生。
我错过了什么?我最终会将其扩展到REST到Spring DSL,或者REST扩展到Java DSL,并带有身份验证,过滤器和拦截器。
我还尝试了cxf:rsServer,并在路由器类中引用了它。
另外,将来如果我必须使用 https 而不是 http?或者我如何让 url 没有硬编码?
可能为时已晚,但要使用HTTP请求,可以使用Apache Camel Servlet组件
http://camel.apache.org/servlet.html
您需要在 cxfrs 端点上设置 resourceClass 选项。 这是一个例子
from("cxfrs://http://localhost:1234/sample?resourceClasses=my.pachage.SampleResource")
您可以在 camel-cxfrs 组件页面中找到一些示例。
如果你想通过servlet传输导出CXF服务,你需要按照它所说的做一些工作。
如果要动态更改地址,可以查看 Camel 属性组件。
如果您希望通过使用 servlet 传输的消费 cxf 休息服务来启动骆驼路线,那么您需要:
- 清理你的绒球.xml并删除任何对码头的引用。
-
将 CXF servlet 添加到您的 Web .xml
<servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- all our webservices are mapped under this URI pattern --> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
-
添加 servlet-transport 依赖项:
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>${cxf-version}</version> </dependency>
-
在您的弹簧/骆驼配置中
<import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <cxf:rsServer id="rsServer" address="/restService" serviceClass="com.something.test.SimpleServiceImpl" loggingFeatureEnabled="true" loggingSizeLimit="20" />
-
从此使用方终结点构建路由,如下所示:
from("cxfrs:bean:rsServer?bindingStyle=SimpleConsumer") .to("log:TEST?showAll=true")
-
现在,您可以使用以下命令查看/(使用方法调用)端点:
http://host:port/context/services/restService?_wadl