> -----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.
