阿帕奇骆驼+春天(战争)+雄猫+休息



我正在尝试使用阿帕奇骆驼开发休息服务。我的项目是部署在雄猫上的春季 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 休息服务来启动骆驼路线,那么您需要:

  1. 清理你的绒球.xml并删除任何对码头的引用。
  2. 将 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>
    
  3. 添加 servlet-transport 依赖项:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf-version}</version>
     </dependency>
    
  4. 在您的弹簧/骆驼配置中

    <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" />
    
  5. 从此使用方终结点构建路由,如下所示:

    from("cxfrs:bean:rsServer?bindingStyle=SimpleConsumer")
        .to("log:TEST?showAll=true")
    
  6. 现在,您可以使用以下命令查看/(使用方法调用)端点: http://host:port/context/services/restService?_wadl

最新更新