This is a link Freeman kindly shared with me earlier on

http://svn.apache.org/viewvc?view=revision&revision=r1537442

It refers to a ServiceMix demo, though I haven't tested the demo.
I guess you'd register it the same way with cxfrs

Cheers, Sergey
On 17/10/14 16:19, atg roxx wrote:
Hi Matt/Sergey,

Thanks for replying.

Sergey,

I was not sure where and how to user your SwaggerFeature.. not sure where
it will fit.

Matt,

In your approach too, could not see the use of camel cxfrs and also there
are not camel routes to server the request.

In Swagger config, could not see any resource location to search for
resources class.

Could you if possible , kindly let me know where how to use these in your
sample program.

-Regards,
atg roxx

On Fri, Oct 17, 2014 at 3:08 PM, Matt Raible <[email protected]> wrote:

Here's how I did it.

Application.java (to register Camel's servlet):
----
import org.apache.camel.component.servlet.CamelHttpTransportServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import
org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import
org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.context.embedded.ErrorPage;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {
         private static final String CAMEL_URL_MAPPING = "/rest/*";
         private static final String CAMEL_SERVLET_NAME = "CamelServlet";

         public static void main(String[] args) {
                 SpringApplication.run(Application.class, args);
         }

         @Override
         protected SpringApplicationBuilder
configure(SpringApplicationBuilder application) {
                 return application.sources(Application.class);
         }

         @Bean
         public ServletRegistrationBean servletRegistrationBean() {
                 ServletRegistrationBean registration =
                                 new ServletRegistrationBean(new
CamelHttpTransportServlet(), CAMEL_URL_MAPPING);
                 registration.setName(CAMEL_SERVLET_NAME);
                 return registration;
         }

         @Bean
         public EmbeddedServletContainerCustomizer containerCustomizer() {
                 return new EmbeddedServletContainerCustomizer() {
                         @Override
                         public void
customize(ConfigurableEmbeddedServletContainer container) {
                                 ErrorPage error401Page = new
ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html");
                                 ErrorPage error404Page = new
ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
                                 ErrorPage error500Page = new
ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html");

                                 container.addErrorPages(error401Page,
error404Page, error500Page);
                         }
                 };
         }
}

SwaggerConfig.java:
----
@Configuration
public class SwaggerConfig implements EnvironmentAware {

     private RelaxedPropertyResolver propertyResolver;

     @Override
     public void setEnvironment(Environment environment) {
         this.propertyResolver = new RelaxedPropertyResolver(environment,
"swagger.");
     }

     /**
      * Swagger Camel Configuration
      */
     @Bean
     public ServletRegistrationBean swaggerServlet() {
         ServletRegistrationBean swagger = new ServletRegistrationBean(new
SpringRestSwaggerApiDeclarationServlet(), "/swagger/*");
         Map<String, String> params = new HashMap<>();
         params.put("base.path", "https://localhost:8443/rest";);
         params.put("api.title", propertyResolver.getProperty("title"));
         params.put("api.description",
propertyResolver.getProperty("description"));
         params.put("api.termsOfServiceUrl",
propertyResolver.getProperty("termsOfServiceUrl"));
         params.put("api.license", propertyResolver.getProperty("license"));
         params.put("api.licenseUrl",
propertyResolver.getProperty("licenseUrl"));
         swagger.setInitParameters(params);
         return swagger;
     }

}

application.properties:
----
# Swagger
swagger.title = My API
swagger.description = A description.
swagger.termsOfServiceUrl = http://yourcompany.com/terms.html
swagger.contact =
swagger.license = Apache 2.0
swagger.licenseUrl = http://www.apache.org/licenses/LICENSE-2.0.html

Hope this helps,

Matt

On Fri, Oct 17, 2014 at 3:18 AM, atg roxx <[email protected]> wrote:
Hi Team,

I am using camel 2.14 and I am trying to expose rest endpoint using CXFRS
and want to use swagger to expose the rest api.


I am able to expose my rest service using cxfrs as described here :
http://camel.apache.org/cxfrs.html

My application is not a web application, and I am using spring and spring
boot for my application.

So I dont have web.xml in my case.

Now for Integrating with Swagger, I looked at
http://camel.apache.org/swagger.html

but it uses web.xml for it.

Is there anyways we can do it without using web.xml.

I looked at the exmple "camel-example-servlet-rest-tomcat" (
http://camel.apache.org/examples.html) explaining swagger integration with
  Camel, but here too web application is used for example i.e web.xml for
this integration.


Could anyone suggest how can we integrate swagger without use  of web.xml


-Cheers,
atg roxx



--
720-560-8460
http://raibledesigns.com
http://linkedin.com/in/mraible


Reply via email to