is it OSGi that is getting in the way ? Are you using OSGI by any chance ? That is the only reason I can think of... If yes then importing javax.ws.rs.* should fix it....
Is it also possible for you to create a simple test project where you will load catalog class and try to get the @Path annotation on a Catalog.getItems() method, without even CXF being involved ? cheers, Sergey KARR, DAVID (ATTCINW) wrote: > >> -----Original Message----- >> From: Sergey Beryozkin [mailto:[email protected]] >> Sent: Tuesday, August 25, 2009 7:18 AM >> To: [email protected] >> Subject: RE: getting "NO_RESOURCES_AVAILABLE" from >> "AbstractJAXRSFactoryBean.checkResources()" >> >> >> Please add breakpoints to org.apache.cxf.jaxrs.JAXRSServerFactoryBean, >> its >> two setServiceBeans(...) methods. JAXRSServerFactoryBean.create() is >> called >> after one of those methods has been called. > > It hit "setServiceBeans(Object... beans)" with my one Catalog object. > > In "getCreatedFromModel(Class<?> realClass)", I noted that > "classResourceInfos" was an empty list, so it returned null. That could > be irrelevant. > > Then, in "evaluateResourceClass(ClassResourceInfo cri, boolean > enableStatic)", I saw that when it was processing the "getItem" method, > "AnnotationUtils.getHttpMethodValue(annotatedMethod)" returned null, so > it didn't create any class resource info. It also returned null from > "AnnotationUtils.getMethodAnnotation(annotatedMethod, Path.class)". The > "getItem()" method has both the "@GET" and "@Path" annotation. > > Why doesn't it think there are any annotations? > >> KARR, DAVID (ATTCINW) wrote: >> > >> >> -----Original Message----- >> >> From: Sergey Beryozkin [mailto:[email protected]] >> >> Sent: Tuesday, August 25, 2009 3:54 AM >> >> To: [email protected] >> >> Subject: RE: getting "NO_RESOURCES_AVAILABLE" from >> >> "AbstractJAXRSFactoryBean.checkResources()" >> >> >> >> >> >> I've tried this class & beans.xml in the system tests area, Catalog >> >> class was >> >> recognized. >> >> >> >> Can you please let me know a bit more about the way you load the >> >> (catalog) >> >> application ? >> >> Are you using Maven or Ant ? Is it Jetty or Tomcat ? Or is it a >> >> standalone >> >> server which explicitly loads the beans.xml ? >> > >> > I build the application with Ant. It's deployed to WebLogic 10. >> > >> > Can you point me to some classes or methods that I could set >> breakpoints >> > in to try to diagnose why it's not processing the Catalog class? >> > >> >> >> >> thanks, Sergey >> >> >> >> >> >> KARR, DAVID (ATTCINW) wrote: >> >> > >> >> >> -----Original Message----- >> >> >> From: Sergey Beryozkin [mailto:[email protected]] >> >> >> Sent: Monday, August 24, 2009 1:13 PM >> >> >> To: [email protected] >> >> >> Subject: Re: getting "NO_RESOURCES_AVAILABLE" from >> >> >> "AbstractJAXRSFactoryBean.checkResources()" >> >> >> >> >> >> >> >> >> Hi >> >> >> >> >> >> Everything seems to be ok. >> >> >> It appears the problem is to do with a missing import : >> >> >> >> >> >> <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs- >> >> >> binding.xml" /> >> >> >> >> >> >> can you add it please to your beans.xml ? >> >> >> >> >> >> For some reasons Catalog class is not introspected. Perhaps due >> to >> >> the >> >> >> fact >> >> >> the above import is missing and thus no jaxrs-aware spring >> factory >> >> is >> >> >> invoked >> >> > >> >> > Nope, I'm afraid that didn't help. >> >> > >> >> > The relevant jars I'm loading are: cxf-2.2.3.jar, jaxb-api- >> 2.1.jar, >> >> > jsr311-api-1.0.jar, spring.jar, and wsdl4j.jar >> >> > >> >> > My current XML and Java are this: >> >> > -----beans.xml------ >> >> > <?xml version="1.0" encoding="UTF-8"?> >> >> > <beans xmlns="http://www.springframework.org/schema/beans" >> >> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> >> > xmlns:jaxws="http://cxf.apache.org/jaxws" >> >> > xmlns:jaxrs="http://cxf.apache.org/jaxrs" >> >> > xmlns:cxf="http://cxf.apache.org/core" >> >> > xsi:schemaLocation=" >> >> > http://www.springframework.org/schema/beans >> >> > http://www.springframework.org/schema/beans/spring-beans.xsd >> >> > http://cxf.apache.org/jaxws >> http://cxf.apache.org/schemas/jaxws.xsd >> >> > http://cxf.apache.org/jaxrs >> http://cxf.apache.org/schemas/jaxrs.xsd >> >> > http://cxf.apache.org/core > http://cxf.apache.org/schemascore.xsd"> >> >> > >> >> > <import resource="classpath:META-INF/cxf/cxf.xml" /> >> >> > <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" >> >> > /> >> >> > <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> >> >> > <import >> >> > resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" >> /> >> >> > >> >> > <jaxrs:server name="restcatalogserver" address="/rest"> >> >> > <jaxrs:features> >> >> > <cxf:logging/> >> >> > </jaxrs:features> >> >> > <jaxrs:serviceBeans> >> >> > <bean class="com.att.ecom.catalog.Catalog"/> >> >> > </jaxrs:serviceBeans> >> >> > </jaxrs:server> >> >> > </beans> >> >> > ------------------------- >> >> > -----Catalog.java----- >> >> > package com.att.ecom.catalog; >> >> > import java.util.ArrayList; >> >> > import java.util.List; >> >> > import javax.ws.rs.GET; >> >> > import javax.ws.rs.Path; >> >> > import javax.ws.rs.PathParam; >> >> > import javax.ws.rs.Produces; >> >> > import javax.xml.bind.annotation.XmlRootElement; >> >> > >> >> > @Path("/catalog/") >> >> > @Produces("application/xml") >> >> > public class Catalog { >> >> > @GET >> >> > @Path("/item/{id}") >> >> > public Item getItem(@PathParam("id") String id) { >> >> > Item item = new Item(); >> >> > item.setId(id); >> >> > item.setTitle("abc"); >> >> > item.setDescription("def"); >> >> > return new Item(); >> >> > } >> >> > @XmlRootElement(name = "Item") >> >> > public static class Item { >> >> > private String id; >> >> > private String title; >> >> > private String description; >> >> > >> >> > public String getTitle() { return title; } >> >> > public String getId() { return id; } >> >> > public String getDescription() { return description; } >> >> > >> >> > public void setTitle(String title) { this.title = title; >> >> > } >> >> > public void setId(String id) { this.id = id; } >> >> > public void setDescription(String description) { >> >> > this.description = description; } >> >> > } >> >> > } >> >> > -------------------- >> >> > >> >> >> KARR, DAVID (ATTCINW) wrote: >> >> >> > >> >> >> > I'm trying to set up a simple REST prototype running alongside >> >> some >> >> >> > other existing code. >> >> >> > >> >> >> > When I deploy, I appear to fall into the following "if" block >> in >> >> >> > "AbstractJAXRSFactoryBean.checkResources()": >> >> >> > >> >> >> > ----------------- >> >> >> > if (list.size() == 0) { >> >> >> > org.apache.cxf.common.i18n.Message msg = >> >> >> > new >> >> >> > org.apache.cxf.common.i18n.Message("NO_RESOURCES_AVAILABLE", >> >> >> > > BUNDLE); >> >> >> > LOG.severe(msg.toString()); >> >> >> > throw new >> >> >> > WebApplicationException(Response.Status.NOT_FOUND); >> >> >> > } >> >> >> > --------------- >> >> >> > >> >> >> > This list would be empty if >> >> >> "serviceFactory.getRealClassResourceInfo()" >> >> >> > returned an empty list. What exactly would that indicate? >> >> >> > >> >> >> > My beans.xml is very simple right now, just: >> >> >> > ----------------------- >> >> >> > <?xml version="1.0" encoding="UTF-8"?> >> >> >> > <beans xmlns="http://www.springframework.org/schema/beans" >> >> >> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> >> >> > xmlns:jaxws="http://cxf.apache.org/jaxws" >> >> >> > xmlns:jaxrs="http://cxf.apache.org/jaxrs" >> >> >> > xsi:schemaLocation=" >> >> >> > http://www.springframework.org/schema/beans >> >> >> > http://www.springframework.org/schema/beans/spring-beans.xsd >> >> >> > http://cxf.apache.org/jaxws >> >> http://cxf.apache.org/schemas/jaxws.xsd >> >> >> > http://cxf.apache.org/jaxrs >> >> > http://cxf.apache.org/schemas/jaxrs.xsd"> >> >> >> > >> >> >> > <import resource="classpath:META-INF/cxf/cxf.xml" /> >> >> >> > <import resource="classpath:META-INF/cxf/cxf-extension- >> soap.xml" >> >> >> > /> >> >> >> > <import > resource="classpath:META-INF/cxf/cxf-servlet.xml" >> /> >> >> >> > >> >> >> > <jaxrs:server name="restcatalogserver" address="/rest"> >> >> >> > <jaxrs:serviceBeans> >> >> >> > <bean class="com.att.ecom.catalog.Catalog"/> >> >> >> > </jaxrs:serviceBeans> >> >> >> > </jaxrs:server> >> >> >> > </beans> >> >> >> > -------------------- >> >> >> > >> >> >> > The "Catalog" class is also very primitive so far: >> >> >> > -------------------------- >> >> >> > package com.att.ecom.catalog; >> >> >> > >> >> >> > import java.util.ArrayList; >> >> >> > import java.util.List; >> >> >> > >> >> >> > import javax.ws.rs.GET; >> >> >> > import javax.ws.rs.Path; >> >> >> > import javax.ws.rs.Produces; >> >> >> > >> >> >> > @Path("/catalog/") >> >> >> > @Produces("application/xml") >> >> >> > public class Catalog { >> >> >> > >> >> >> > @GET >> >> >> > @Path("/items") >> >> >> > public List<Item> getItems() { >> >> >> > ArrayList<Item> result = new >> ArrayList<Item>(); >> >> >> > result.add(new Item()); >> >> >> > return (result); >> >> >> > } >> >> >> > >> >> >> > public static class Item { >> >> >> > private String title; >> >> >> > private String description; >> >> >> > >> >> >> > public String getTitle() { return title; } >> >> >> > public String getDescription() { return > description; >> } >> >> >> > >> >> >> > public void setTitle(String title) { this.title > = >> title; >> >> >> > } >> >> >> > public void setDescription(String description) { >> >> >> > this.description = description; } >> >> >> > } >> >> >> > } >> >> >> > ---------------------------- >> >> >> > >> >> >> > >> >> >> >> >> >> -- >> >> >> View this message in context: http://www.nabble.com/getting- >> >> >> %22NO_RESOURCES_AVAILABLE%22-from- >> >> >> %22AbstractJAXRSFactoryBean.checkResources%28%29%22- >> >> >> tp25120790p25123056.html >> >> >> Sent from the cxf-user mailing list archive at Nabble.com. >> >> > >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: http://www.nabble.com/getting- >> >> %22NO_RESOURCES_AVAILABLE%22-from- >> >> %22AbstractJAXRSFactoryBean.checkResources%28%29%22- >> >> tp25120790p25132223.html >> >> Sent from the cxf-user mailing list archive at Nabble.com. >> > >> > >> > >> >> -- >> View this message in context: http://www.nabble.com/getting- >> %22NO_RESOURCES_AVAILABLE%22-from- >> %22AbstractJAXRSFactoryBean.checkResources%28%29%22- >> tp25120790p25135192.html >> Sent from the cxf-user mailing list archive at Nabble.com. > > > -- View this message in context: http://www.nabble.com/getting-%22NO_RESOURCES_AVAILABLE%22-from-%22AbstractJAXRSFactoryBean.checkResources%28%29%22-tp25120790p25138372.html Sent from the cxf-user mailing list archive at Nabble.com.
