在Java EE 7上骑骆驼–带有Swagger文档的REST服务

swagger_java_dsl_camel 骆驼开箱即用。 Swagger集成就是其中之一。 不幸的是,大多数已经存在的功能都严重依赖于Spring。 但这并不能阻止我们在普通的Java EE 7应用程序中使用它们,因为有时它只是服务器的轻量级变体。 但我不想再对此进行讨论。 相反,我认为在所有情况下都有一种技术选择,如果您运行一个项目,而只是想将Camel与Java EE 7一起使用,并且需要REST服务并希望通过Swagger将它们记录下来,那么这是适合您的文章。

在EE 7中引导骆驼

您需要做的第一件事是在单例启动bean中引导Camel。 我已经写了一篇有关如何执行此操作的文章 。 另一个选择是实际使用wildfly-camel子系统 ,该子系统也可用,但这要求您使用JBoss WildFly8.x。

昂首阔步和骆驼休息依赖

到今天为止,Camel中的Swagger集成仅受Spring应用程序支持。 因此,要使此工作正常进行,我们必须比平时执行一些配置。 但是我保证,它不会太复杂,只需一分钟即可完成。 开始吧:

添加到基本Camel EE 7示例的第一件事是骆驼的其他依赖项:

<dependency><groupId>org.apache.camel</groupId><artifactId>camel-servlet</artifactId></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-metrics</artifactId></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-swagger</artifactId></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-jackson</artifactId></dependency>

返回驼峰语境

如果无法使用其中的内容,则需要实现自己的CdiRestSwagger-Camel上下文查找。 即将推出的Camel版本有一些烹调方法,但是现在我们必须自己做。 这非常简单,因为我们需要覆盖RestSwaggerApiDeclarationServlet的一种方法。 除了简单地返回注入的CdiCamelContext外,这没有任何其他作用。

public class CdiRestSwaggerApiDeclarationServlet extends RestSwaggerApiDeclarationServlet {@InjectCdiCamelContext context;@Overridepublic CamelContext lookupCamelContext(ServletConfig config) {return context;}
}

一些进一步的配置

我们还没有完成。 您还有更多配置要做。 由于Camel设计为可在许多不同的环境中运行,并且没有特定的Java EE 7版本,因此它仍然依赖于web.xml配置来映射映射servlet。 请特别注意CdiRestSwaggerApiDeclarationServlet初始化参数。 在这个简单的示例中,我不必费心找出它们,但仍然依靠它们。 因此,根据您在Maven构建中设置的应用程序的最终名称,需要对其进行调整。

<context-param><param-name>contextConfigLocation</param-name><!-- to use Java DSL --><param-value>classpath:camel-config.xml</param-value></context-param><!-- to setup Camel Servlet --><servlet><display-name>Camel Http Transport Servlet</display-name><servlet-name>CamelServlet</servlet-name><servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet<load-on-startup>1</load-on-startup></servlet><!-- to setup Camel Swagger api servlet --><servlet><!-- we are using our own swagger-cdi binding servlet --><servlet-class>org.apache.camel.component.swagger.CdiRestSwaggerApiDeclarationServlet<init-param><param-name>base.path</param-name><param-value>http://localhost:8080/camel/rest</param-value></init-param><init-param><param-name>api.path</param-name><param-value>         http://localhost:8080/camel/api-docs          </param-value></init-param><init-param><param-name>api.version</param-name><param-value>1.2.3</param-value></init-param><init-param><param-name>api.title</param-name><param-value>User Services</param-value></init-param><init-param><param-name>api.description</param-name><param-value>Camel Rest Example with Swagger that provides an User REST service</param-value></init-param><load-on-startup>2</load-on-startup></servlet><!-- swagger api declaration --><servlet-mapping><servlet-name>ApiDeclarationServlet</servlet-name><url-pattern>/api-docs/*</url-pattern></servlet-mapping><!-- define that url path for the Camel Servlet to use --><servlet-mapping><servlet-name>CamelServlet</servlet-name><url-pattern>/rest/*</url-pattern></servlet-mapping><!-- enable CORS filter so people can use swagger ui to browse and test the apis --><filter><filter-name>RestSwaggerCorsFilter</filter-name><filter-class>org.apache.camel.component.swagger.RestSwaggerCorsFilter</filter-class></filter><filter-mapping><filter-name>RestSwaggerCorsFilter</filter-name><url-pattern>/api-docs/*</url-pattern><url-pattern>/rest/*</url-pattern></filter-mapping>

足够的配置–符合逻辑!

完成后,您需要一些逻辑。 我在这里使用的示例摘自Camel的官方示例,称为camel-example-servlet-rest-tomcat 。 请注意,该示例同时包含了基于XML DSL的定义和基于Java DSL的其余服务的定义。 我只使用了Java DSL,特别是UserRouteBuilder类中定义的路由。

确保为用户服务和用户添加@Named批注,并添加从UserRouteBuilder到启动bean的路由。

context.addRoutes(new UserRouteBuilder());

这就对了。 现在,您可以通过访问http:// localhost:8080 / camel / api-docs浏览浏览您的API。 如果要使用Swagger UI,则必须将其添加到应用程序中。 该示例应用程序包含构建部分中的所有内容,这是执行此操作所需的。 因此,请查看完整的GitHub项目,以了解如何使用Swagger UI浏览API。

翻译自: https://www.javacodegeeks.com/2014/12/riding-camel-on-java-ee-7-rest-services-with-swagger-documentation.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么隐藏滚动条又能滚动

1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>滚动条隐藏</title>6 <style>7 body, ul, li {8 margin: 0;9 padding: 0; 10 …

Eclipse to android

JDK Eclipse Android SDK ADT 1 必须软件 Java JDK SE 1.6 (jdk-7u9-windows-i586.exe) Eclipse (Eclipse IDE for Java Developers) Google Android SDK (android-sdk_r15-windows.zip) ADT (ADT-15.0.0.zip) 如果找不到可参考&#xff1a; http://blog.csdn.net/zhenyong…

用多态和组合替换多个条件

这是一种众所周知的重构模式&#xff0c;可以将条件条件替换为多态性。 如果您不熟悉该模式&#xff0c;可以在此处查看 。 但是&#xff0c;一旦该类中有多个条件检查所基于的字段&#xff0c;该基本解决方案便会开始崩溃。 我们将研究一些有关如何使用这些可能性的想法。 有…

canvas画饼图

<style> body { background: black; text-align: center; } #cans { background: white; } </style> <script> function disToRad(n){//将度数表示弧度计算的方法 return n*Math.PI/180;//π用PI表示&#xff0c;π180&#xff0c;所以1PI/180 } w…

Web设计趋势分析

本文译自网站设计公司weavora.com&#xff0c;介绍了在他们眼里 8 个 Web 设计趋势&#xff1a;单页面、用照片做背景、色块设计、超大号的图片、聚焦简洁、响应式设计、视差滚动、强调字体&#xff0c;每个趋势后面都附了数个案例&#xff0c;相信对网站设计师会有一定的参考价…

使用Jasmine,Spock和Nashorn测试JVM服务器端JavaScript

JavaScript使用不仅限于浏览器中的客户端代码或NodeJS支持的服务器端代码。 许多基于JVM的项目都将其用作内部脚本语言。 测试这种功能既不简单也不标准。 在本文中&#xff0c;我打算演示一种使用成熟的工具&#xff08;例如Jasmine &#xff0c; Spock和Nashorn在服务器端JVM…

C#中的多态

封装、继承、多态&#xff0c;面向对象的三大特性&#xff0c;前两项理解相对容易&#xff0c;但要理解多态&#xff0c;特别是深入的了解&#xff0c;对于初学者而言可能就会有一定困难了。我一直认为学习OO的最好方法就是结合实践&#xff0c;封装、继承在实际工作中的应用随…

AJAX JSON

1、AJAX [1] AJAX简介 > 全称&#xff1a; Asynchronous JavaScript And XML > 异步的JavaScript和XML > AJAX就是通过JavaScript向服务器发送请求&#xff0c;并接收响应&#xff0c;然后我们在通过DOM来修改页面。 > XML指的是服务器响应的…

在WildFly 8.2中修补焊接3 – Java EE 8的第一个实验RI

Java EE 8一直在发展&#xff0c;并且已经提出了几个新的组件JSR。 JSR 365将定义CDI 2.0的规范。 红帽公司已经开始研究Weld 3的实现原型&#xff0c;并且Alpha3最近发布了 。 Red Hat的Java EE 8兼容应用服务器将是WildFly&#xff0c;将在其中实现所有不同的技术。 同时&am…

mat-form-field must contain a MatFormFieldControl错误的解决方法

下面的代码竟然出错了&#xff1a; <mat-form-field><input matInput placeholder"输入名称"></mat-form-field> 错误提示的莫名其妙&#xff0c;其实只要导入以下模块就可了&#xff1a; imports: [MatFormFieldModule,MatInputModule,] 更多专业…

lua# lua5.1.4 源码文件作用一览

写了个脚本列出lua源码C文件头部的注释&#xff0c;作为我有一搭没一搭以Lua为对象学习编译原理的开端。 lua5.1.4全部的源码有35个C文件&#xff0c;17216行代码。每个文件基本的功能如下 ./output_lua_sources_comments.sh ~/resources/sources/lua/src …

带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体

Hibernate OGM的第一个最终版本已经发布 &#xff0c;团队从发布狂潮中恢复了一些。 因此&#xff0c;他们考虑建立一系列教程式博客&#xff0c;使您有机会轻松地从Hibernate OGM重新开始。 感谢Gunnar Morling&#xff08; gunnarmorling &#xff09;创建了本教程。 介绍 不…

为自己写程序之JavsScript代码段测试器

JavaScript的测试&#xff0c;通常是在Firefox的firebug插件中测试的。不过有时只是测试几行代码都要写一个html&#xff0c;再打开浏览器测试运行结果&#xff0c;感觉并不是很方便。 今天花了点时间做了一个简易的JS片段测试器。其实这主要是看了IronJs开源项目以后&#xff…

sizeof和strlen的区别(其中涉及NUL的讲解)

本文是自己结合平时所学的知识&#xff0c;对sizeof和strlen的区别进行了总结&#xff0c;如有不对的地方还请批评指证&#xff0c;共同进步&#xff01;&#xff01;&#xff01; 一、从C语言的定义上来讲 1、sizeof是关键字&#xff0c;而strlen是包含在string.h头文件中的一…

我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问

与以前的版本相比&#xff0c;JBoss AS7的目标之一是使其在默认情况下更加安全。 受此目标直接影响的领域之一是&#xff0c;您不再期望服务器在端口上公开某些服务&#xff0c;而无需任何身份验证/授权就可以访问它。 请记住&#xff0c;在以前的JBoss AS版本中&#xff0c;只…

js判断对象类型

1.typeof typeof只能判断区分基本类型&#xff0c;number、string、boolean、undefined和object,function&#xff1b; typeof 0; //number; typeof true; //boolean; typeof undefined; //undefined; typeof "hello world" //string; typeof function(){}; …

我喜欢的类型

http://v.qq.com/cover/h/hfd581s2y9unvy8.html?vidp0011ocge8q 转载于:https://www.cnblogs.com/sliz/archive/2012/12/09/2809742.html

使用WildFly和Java EE 7映像与Docker提供者一起流浪

什么是无业游民&#xff1f; Vagrant是创建虚拟开发环境的简化且可移植的方式。 它可与多种虚拟化软件一起使用&#xff0c;例如VirtualBox&#xff0c;VMWare&#xff0c;AWS等。 它还可以与多种配置软件一起使用&#xff0c;例如Ansible&#xff0c;Chef&#xff0c;Puppet或…

Apache Nutch 1.6 发布

Apache Nutch 1.6 发布&#xff0c;该版本修复了超过 20 个 bug&#xff0c;新功能包括&#xff1a;新的 HostNormalizer&#xff0c;可通过 MIME-type 和 Indexer API 的功能增强来动态设置 fetchInterval &#xff0c;更新 Tika 到 1.2 版本&#xff0c;更新 Autimaton 到 1.…

EE Servlet 3:如何在Web应用程序中设置后端服务

在Web应用程序中&#xff0c;提供用户界面&#xff08;UI&#xff09;通常只是工作的一半。 许多应用程序都有后端服务支持的要求。 后端服务的一些示例是调度程序进程&#xff08;批处理&#xff09;&#xff0c;侦听队列并在消息进入时作出响应&#xff0c;或者是简单的事情&…