You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Sergey Beryozkin (JIRA)" <ji...@apache.org> on 2015/04/01 13:38:52 UTC
[jira] [Commented] (CXF-6325) java.lang.NoSuchMethodError:
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.addToBeans
[ https://issues.apache.org/jira/browse/CXF-6325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14390448#comment-14390448 ]
Sergey Beryozkin commented on CXF-6325:
---------------------------------------
I think it is an obvious mix in of various CXF versions - please ask such questions at the CXF users list, thanks
> java.lang.NoSuchMethodError: org.apache.cxf.jaxrs.JAXRSServerFactoryBean.addToBeans
> -----------------------------------------------------------------------------------
>
> Key: CXF-6325
> URL: https://issues.apache.org/jira/browse/CXF-6325
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS
> Affects Versions: 3.0.4
> Environment: Jboss Enterprise Application Platform 6.1+ (runtime environment)
> Reporter: Ganesh Kalanadhabhatla
>
> I am trying to use CXF 3.0.4 REST + spring data JPA + SPRING with java configuration (no XML).
> Getting the following runtime error in JBOS EAP 6.1+ server.
> Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.cxf.endpoint.Server com.webconsults.concurrent.batch.AppConfig.jaxRsServer(org.springframework.context.ApplicationContext)] threw exception; nested exception is java.lang.NoSuchMethodError: org.apache.cxf.jaxrs.JAXRSServerFactoryBean.addToBeans(Ljava/util/Collection;Ljava/lang/Object;)V
> at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:188) [spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
> at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:586) [spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
> ... 25 more
> Caused by: java.lang.NoSuchMethodError: org.apache.cxf.jaxrs.JAXRSServerFactoryBean.addToBeans(Ljava/util/Collection;Ljava/lang/Object;)V
> at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBeans(JAXRSServerFactoryBean.java:341) [cxf-rt-frontend-jaxrs-3.0.4.jar:3.0.4]
> at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setServiceBean(JAXRSServerFactoryBean.java:330) [cxf-rt-frontend-jaxrs-3.0.4.jar:3.0.4]
> at com.webconsults.concurrent.batch.AppConfig.jaxRsServer(AppConfig.java:61) [classes:]
> at com.webconsults.concurrent.batch.AppConfig$$EnhancerBySpringCGLIB$$3a969f88.CGLIB$jaxRsServer$0(<generated>) [spring-core-4.0.5.RELEASE.jar:]
> at com.webconsults.concurrent.batch.AppConfig$$EnhancerBySpringCGLIB$$3a969f88$$FastClassBySpringCGLIB$$e2d0b8b9.invoke(<generated>) [spring-core-4.0.5.RELEASE.jar:]
> at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) [spring-core-4.0.5.RELEASE.jar:4.0.5.RELEASE]
> at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312) [spring-context-4.0.5.RELEASE.jar:4.0.5.RELEASE]
> at com.webconsults.concurrent.batch.AppConfig$$EnhancerBySpringCGLIB$$3a969f88.jaxRsServer(<generated>) [spring-core-4.0.5.RELEASE.jar:]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_80-ea]
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_80-ea]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_80-ea]
> at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_80-ea]
> My pom dependencies are:
> <dependencies>
> <!-- cxf -->
> <dependency>
> <groupId>org.apache.cxf</groupId>
> <artifactId>cxf-rt-frontend-jaxrs</artifactId>
> <version>${cxf.version}</version>
> </dependency>
>
> <!-- required to avoid ... -->
> <dependency>
> <groupId>org.apache.cxf</groupId>
> <artifactId>cxf-rt-core</artifactId>
> <version>2.7.15</version>
> </dependency>
> <dependency>
> <groupId>org.apache.cxf</groupId>
> <artifactId>cxf-rt-ws-policy</artifactId>
> <version>${cxf.version}</version>
> </dependency>
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactId>spring-context</artifactId>
> <version>${spring.version}</version>
> </dependency>
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactId>spring-webmvc</artifactId>
> <version>${spring.version}</version>
> </dependency>
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactId>spring-beans</artifactId>
> <version>${spring.version}</version>
> </dependency>
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactId>spring-tx</artifactId>
> <version>${spring.version}</version>
> </dependency>
> <dependency>
> <groupId>org.springframework.data</groupId>
> <artifactId>spring-data-commons-core</artifactId>
> <version>${spring.data.commons-core.version}</version>
> <exclusions>
> <exclusion>
> <artifactId>spring-core</artifactId>
> <groupId>org.springframework</groupId>
> </exclusion>
> <exclusion>
> <artifactId>spring-beans</artifactId>
> <groupId>org.springframework</groupId>
> </exclusion>
> </exclusions>
> </dependency>
> <dependency>
> <groupId>org.springframework.data</groupId>
> <artifactId>spring-data-jpa</artifactId>
> <version>${spring.data.jpa.version}</version>
> </dependency>
> <!--
> <dependency>
> <groupId>org.springframework.data</groupId>
> <artifactId>spring-data-rest-webmvc</artifactId>
> <version>${spring.data.rest.webmvc.version}</version>
> </dependency>
> -->
>
> <dependency>
> <groupId>org.hibernate</groupId>
> <artifactId>hibernate-entitymanager</artifactId>
> <version>${hibernate.version}</version>
> </dependency>
> <!-- JSON Provider -->
> <dependency>
> <groupId>com.fasterxml.jackson.jaxrs</groupId>
> <artifactId>jackson-jaxrs-json-provider</artifactId>
> <version>2.5.1</version>
> </dependency>
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>slf4j-log4j12</artifactId>
> <version>${slf4j.version}</version>
> </dependency>
> <dependency>
> <groupId>javax.servlet</groupId>
> <artifactId>javax.servlet-api</artifactId>
> <version>3.1.0</version>
> </dependency>
> <!-- commons dbcp -->
> <dependency>
> <groupId>commons-dbcp</groupId>
> <artifactId>commons-dbcp</artifactId>
> <version>1.4</version>
> </dependency>
> <!-- Hibernate -->
> <dependency>
> <groupId>org.hibernate</groupId>
> <artifactId>hibernate-core</artifactId>
> <version>${hibernate.version}</version>
> </dependency>
> <!-- H2 Database -->
> <dependency>
> <groupId>com.h2database</groupId>
> <artifactId>h2</artifactId>
> <version>${h2.version}</version>
> </dependency>
> <!-- Gemfire XD -->
> <!-- <dependency> <groupId>com.pivotal</groupId> <artifactId>gfxd-client</artifactId>
> <version>1.0</version> <scope>system</scope> <systemPath>C:/opt/app/Pivotal_GemFireXD_140_b50226_Windows/lib/gemfirexd-client.jar</systemPath>
> </dependency> -->
> <!--
> <dependency>
> <groupId>org.apache.cxf</groupId>
> <artifactId>cxf-rt-transports-http-jetty</artifactId>
> <version>${cxf.version}</version>
> </dependency>
> -->
> <!-- logging -->
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>slf4j-log4j12</artifactId>
> <version>${slf4j.version}</version>
> </dependency>
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>slf4j-log4j12</artifactId>
> <version>${slf4j.version}</version>
> </dependency>
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>jcl-over-slf4j</artifactId>
> <version>${slf4j.version}</version>
> </dependency>
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>slf4j-api</artifactId>
> <version>${slf4j.version}</version>
> </dependency>
> <!-- <dependency> <groupId>com.pivotal</groupId> <artifactId>gfxd-dialect</artifactId>
> <version>1.0</version> <scope>system</scope> <systemPath>/opt/app/Pivotal_GemFireXD_140_b50226_Windows/lib/gfxdHibernateDialect.jar</systemPath>
> </dependency> ... -->
> <!-- TESTS -->
> <dependency>
> <groupId>org.hamcrest</groupId>
> <artifactId>hamcrest-all</artifactId>
> <version>1.3</version>
> <scope>test</scope>
> </dependency>
> <dependency>
> <groupId>junit</groupId>
> <artifactId>junit</artifactId>
> <version>4.11</version>
> <scope>test</scope>
> <exclusions>
> <exclusion>
> <artifactId>hamcrest-core</artifactId>
> <groupId>org.hamcrest</groupId>
> </exclusion>
> </exclusions>
> </dependency>
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactId>spring-test</artifactId>
> <version>4.0.5.RELEASE</version>
> <scope>test</scope>
> </dependency>
> <dependency>
> <groupId>com.github.springtestdbunit</groupId>
> <artifactId>spring-test-dbunit</artifactId>
> <version>1.2.0</version>
> <scope>test</scope>
> </dependency>
> <dependency>
> <groupId>org.dbunit</groupId>
> <artifactId>dbunit</artifactId>
> <version>2.4.9</version>
> <scope>test</scope>
> <exclusions>
> <exclusion>
> <artifactId>junit</artifactId>
> <groupId>junit</groupId>
> </exclusion>
> </exclusions>
> </dependency>
> </dependencies>
> My WebAppInitializer (replacement for web.xml)
> @Configuration
> public class WebAppInitializer implements WebApplicationInitializer {
>
> @Override
> public void onStartup(ServletContext servletContext) throws ServletException {
> System.out.println("ON STARTUP BEGIN");
> servletContext.addListener(new ContextLoaderListener(createWebAppContext()));
> addApacheCxfServlet(servletContext);
> System.out.println("ON STARTUP END");
> }
>
> private void addApacheCxfServlet(ServletContext servletContext) {
> CXFServlet cxfServlet = new CXFServlet();
> //org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet cxfServlet = new CXFNonSpringJaxrsServlet();
>
> ServletRegistration.Dynamic appServlet = servletContext.addServlet("CXFServlet", cxfServlet);
> appServlet.setLoadOnStartup(1);
>
> Set<String> mappingConflicts = appServlet.addMapping("/cxf/*");
> }
>
> private WebApplicationContext createWebAppContext() {
> // AnnotationConfigWebApplicationContext to avoid using beans xml files.
> AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
> appContext.register(AppConfig.class);
> return appContext;
> }
>
> }
> My AppConfig.xml (replacement for beans.xml)
> import org.apache.cxf.bus.spring.SpringBus;
> import org.apache.cxf.endpoint.Server;
> import org.apache.cxf.jaxrs.JAXRSBindingFactory;
> import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
> import org.springframework.context.ApplicationContext;
> import org.springframework.context.annotation.Bean;
> import org.springframework.context.annotation.ComponentScan;
> import org.springframework.context.annotation.Configuration;
> import org.springframework.context.annotation.DependsOn;
> import org.springframework.context.annotation.Import;
> import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
> import com.webconsults.concurrent.batch.resource.ExceptionResource;
> import com.webconsults.concurrent.batch.resource.MemberResource;
> @Configuration
> @ComponentScan("com.webconsults.concurrent.batch")
> @Import({SpringDBConfig.class})
> //@EnableWebMvc
> public class AppConfig {
>
> //org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet$ApplicationImpl
> /*
> @ApplicationPath("/")
> public class MomsRsApiApplication extends Application { }
> */
>
>
> @Bean(destroyMethod = "shutdown")
> public SpringBus cxf() {
> return new SpringBus();
> }
>
>
> @Bean
> @DependsOn("cxf")
> public Server jaxRsServer(ApplicationContext appContext) {
> //factory = RuntimeDelegate.getInstance().createEndpoint(momsRsApiApplication(), JAXRSServerFactoryBean.class);
> JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
> //factory.setTransportId("http://cxf.apache.org/transports/http");
>
> /*
> //use this if CXF to manage the resource
>
> factory.setResourceClasses(MemberResource.class);
>
> */
>
>
> //use this if spring manages the resource
>
> List<Object> objects = Arrays.<Object>asList
> (memberResource());
> System.out.println("objects.sz:"+objects.size());
> //factory.setServiceBeans();
> factory.setServiceBean((Object)memberResource());
>
>
> //factory.setAddress("/" + factory.getAddress());
> factory.setAddress("http://localhost:8080/");
> factory.setProvider(jsonProvider());
> factory.setBindingId(JAXRSBindingFactory.JAXRS_BINDING_ID);
> return factory.create();
> }
> /*
> @Bean
> public Endpoint memberResource() {
> EndpointImpl endpoint = new EndpointImpl(cxf(), new MemberResource(), new EndpointInfo());
> endpoint.setAddress("/memberservice");
>
> return endpoint;
> }
> */
>
> /*
> @Bean
> public MomsRsApiApplication momsRsApiApplication() {
> return new MomsRsApiApplication();
> }
> */
>
> @Bean
> public JacksonJsonProvider jsonProvider() {
> return new JacksonJsonProvider();
> }
>
> /*
> @Bean
> public BatchServiceIf<Member> batchService() {
> return new BatchService();
> }
> */
>
>
> @Bean
> public MemberResource memberResource() {
> return new MemberResource();
> }
>
>
>
> @Bean
> public ExceptionResource exceptionResource() {
> return new ExceptionResource();
> }
>
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)