我在做一些关于Camel-CXf集成的研究,对下面的场景感到困惑。
所以我实现了一个Restendpoint
@Path("/authenticate")
public interface Sample {
@GET
@Path("/handshake")
@Produces(MediaType.TEXT_PLAIN)
public Response handshake();
@POST
@Path("/login")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@Produces(MediaType.APPLICATION_JSON)
public Response login(LoginRequest request) throws JsonGenerationException, JsonMappingException, IOException;
}
实现如下
public class SampleImpl implements Sample{
@Context
private HttpHeaders headers;
@Autowired
CamelContext context;
public Response handshake()
{
System.out.println("HandShake Executed Successfully");
return Response.status(Status.OK).entity("This is a Message after Routing").build();
}
public Response login(LoginRequest request) throws JsonGenerationException, JsonMappingException, IOException {
System.out.println("The Rquest objecr is Received "+request);
return Response.status(Status.OK).entity(mapper.writeValueAsString(request)).build();
}
}
路线
<camel:from uri="cxfrs:bean:SampleRestEndPoint?bindingStyle=SimpleConsumer"></camel:from>
将其路由到实现中。但是由于实现返回一个响应对象,我不知道如何绕过这个对象构建路由。
任何指示将不胜感激。
@GauthamHonnavara - 这是具有关联处理器的 JS Web 服务的实现,但它不会关联到endpoint的任何直接路由。另外,我的问题特定于 JAX-RS,您无法从 wsdl 生成服务类。
假设这个用例,您需要一个客户调用endpoint,然后再执行 5 个步骤,联系另一个 Web 服务等,然后发送回响应。上面的实现在 Web 服务实现 Bean 本身中发送回响应。
因此,为了避免这种情况,创建一个与生产者消费者等的简单接口,就像我的问题一样,然后使每个方法无效,如果你想注入交换(如果需要。)并使用以下配置
<!-- Created the CXF End Point For the Calls to Come IN -->
<cxf:rsServer id="RestEndPoint" address="/rest"
serviceClass="com.poc.camel.cxf.service.incoming.xxx"
loggingFeatureEnabled="true" loggingSizeLimit="20">
<cxf:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" >
<!-- <constructor-arg ref="customObjectMapper" type="org.codehaus.jackson.map.ObjectMapper"/> -->
</bean>
</cxf:providers>
</cxf:rsServer>
诀窍是使用服务类标记。如果在那里提供了接口,那么它不需要 CXF 的具体实现。
希望这有帮助。让我知道
伙计,看看这个 - http://bushorn.com/camel-cxf-geocoder-example/
虽然上面的例子不是REST,但是CXF和Camel route的用法是一样的。
我将执行以下强制性步骤:
>
避免bean/自定义类-尝试使用骆驼框架功能。
使用XML - Spring/Blueprint DSL
我一直试图使用2.12.1-snapshot中的RabbitMQComponent版本让camel进行路由。这样做,我可以很容易地消费,但在路由到另一个队列时会遇到ad问题。 在这篇文章中,我已经验证了指定的交换机是否配置了适当的路由密钥。我注意到,我能够大量消费,但不能生产到out.queue。 以下是对处理消息的RabbitMQProducer的唯一引用。 我花了很多时间研究了RabbitMQ
我正在使用cxf作为带有WS-寻址的apache骆驼路由中的生产者。我知道可以通过(例如可能是错误的)在路由中设置SoapAction Header WS-Addressing操作字段是否也可以这样做?因为我注意到它发送的值错误。我需要输入两个WS-Addressing操作值,并在驼峰路线中决定使用哪一个。
我对Java服务器端编程还不熟悉,我的问题基本上是使用Servlets(低级别,不使用spring mvc等)开始一个起点,然后从node开始构建。js后台,其中路由定义将以函数(,等),函数将在http方法之一(GET、post、PUT、DELETE)的参数中接收和。 如果有人可以帮助我,从一个servlet类中的路由(比如说)开始定义方法,这个servlet类映射到http方法,同时在其参数中
我目前正在用spring cloud gateway替换网飞Zuul的api gateway。该设置对大多数路线使用发现客户端(eureka ),但是我们还有一个solr实例正在运行,它需要手动定义路线(因为solr不支持Eureka) 使用以下配置,使用到在本地主机上运行的solr的静态路由可以很好地工作: 但是,我想为这条路由使用负载平衡的uri,因为我们有多个solr实例。查看留档,我发现实
问题内容: 是否可以将Navigator.popUntil与没有固定名称的路由一起使用? 我有一条通过以下方式创建的路线: 现在,当我在任何屏幕上收到推送通知并显示弹出消息时,其中一个按钮应指向上面列出的路线。该路线已创建,必须“弹出”。怎么做? 使用命名路由,可以这样完成: “关键”和所需路线的上下文均可用。但是,重新创建路由似乎不是一个好的解决方案,因为原始路由创建包含一些变量(somevar
问题内容: 我有一个提供文件列表的应用程序。 应用程序必须响应以下路由: 这是没有指定路径的路由,例如目录。我在想类似的东西显然不起作用。 如何定义一个响应所有示例的路线? 问题答案: 使用(注意尾随星号)。 完整的例子