> -----Original Message----- > From: Sergey Beryozkin [mailto:[email protected]] > Sent: Tuesday, August 25, 2009 10:06 AM > To: [email protected] > Subject: RE: getting "NO_RESOURCES_AVAILABLE" from > "AbstractJAXRSFactoryBean.checkResources()" > > > 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...
Not that I'd like this to be a permanent solution, but isn't it possible to configure everything that is being done with annotations in the Spring context instead? I think I saw an example of that somewhere, but I don't see it in the JAX-RS section of the Apache CXF doc. > 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.
