I've heard before WebLogic has some sort of OSGI-based kernel so it might be
that assemblies are wrapped into bundles under the hood - not sure though.
> > If yes then importing javax.ws.rs.* should fix it....
> I assume you mean in the Catalog class? I'll try it.
IN OSGI environment one needs to explicitly import packages containing
annotations so if OSGI were used then one'd update either a bundle or some
system configuration file with an Import-Package OSGI directive....
> I'll put that on the list of things to try, but I would be extremely
surprised if that displayed any problem.
give a try please - simply update Catalog constructor - Catalog seem to be
instantiated by Spring just fine, and in that constructor do
getClass().getMethod("getItems").getAnnotation(Path.class); or may be in a
static initializer.
As the last resort/workaround, while you're investigating and just to keep
you going, you might want to try this feature :
http://cxf.apache.org/docs/jax-rs.html#JAX-RS-RESTfulserviceswithoutannotations
You can describe how Catalog should be treated by the JAX-RS runtime without
applying annotations and then register that description from spring
cheers, Sergey
KARR, DAVID (ATTCINW) wrote:
>
>> -----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...
>
> The prototype is embedded along with a lot of other code that is
> assembled into an EAR with the ATG Dynamo framework. I'm pretty sure
> they're not using OSGi, but the EAR assembly is relatively complex. I'm
> not sure what they could be doing that could possibly mess this up.
>
>> If yes then importing javax.ws.rs.* should fix it....
>
> I assume you mean in the Catalog class? I'll try 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 ?
>
> I'll put that on the list of things to try, but I would be extremely
> surprised if that displayed any problem. It's likely something about my
> deployment environment that is causing this.
>
>> 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.
>
>
>
--
View this message in context:
http://www.nabble.com/getting-%22NO_RESOURCES_AVAILABLE%22-from-%22AbstractJAXRSFactoryBean.checkResources%28%29%22-tp25120790p25141130.html
Sent from the cxf-user mailing list archive at Nabble.com.