I understand what you're saying. I do think that a simple client for packaging the data in a restful way and handling all the http plumbing is a nicety. It's especially useful in unit testing. I can use the same unit tests that I ran on my business object implementation with just a subclass and an override on the getService() method. Now, I can do all the plumbing myself, of course. But I do think that if CXF came with a bundled client factory for restful services it would be terrific.
On 11/5/07, Liu, Jervis <[EMAIL PROTECTED]> wrote: > Glad to see you have your problem resolved. What I am suggesting is that do > not write your RESTful service client using JAX-WS style API (eg, > JaxWsProxyFactoryBean etc), we do not support that and have no plan to > support it. Instead, you may find most of time you are just fine to access > your RESTful services by using HttpURLConnection or Apache HttpClient or even > a browser. > > Cheers, > Jervis > > > -----Original Message----- > > From: Todd Orr [mailto:[EMAIL PROTECTED] > > Sent: 2007?11?6? 2:06 > > To: [email protected] > > Subject: Re: ClientFactoryBean AbstractMethodError > > > > > > That seems to have worked. Thanks! > > > > On 11/5/07, Willem Jiang <[EMAIL PROTECTED]> wrote: > > > Hi , > > > > > > Can you check xercesImpl-2.8.1.jar is in the class path of your test > > > with JUnit? > > > I can find the method > > > > > > org.apache.xerces.dom.DocumentImpl.getInputEncoding() in that jar. > > > > > > Willem. > > > > > > Todd Orr wrote: > > > > hanks. That doesn't really explain, to me, why the server > > starts up > > > > fine when deployed but fails with the error shown when > > run in a JUnit > > > > test. The demo is able to create a service in JUnit > > without problem. > > > > In this particular JUnit, rather than relying on Spring > > configuration, > > > > I was attempting to create the server myself using the > > following code: > > > > > > > > private Server createRestServer(SessionFactory sessionFactory) { > > > > MyServiceImpl service = new MyServiceImpl(); > > > > service.setSessionFactory(sessionFactory); > > > > > > > > JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean(); > > > > sf.setServiceClass(MyServiceInterface.class); > > > > sf.setBindingId(HttpBindingFactory.HTTP_BINDING_ID); > > > > sf.setAddress("http://localhost:8080/rest/"); > > > > sf.getServiceFactory().setInvoker(new > > BeanInvoker(service)); > > > > sf.getServiceFactory().setWrapped(true); > > > > > > > > return sf.create(); > > > > } > > > > > > > > This is almost exactly the same as the server code from > > the demo - the > > > > code that works. However, in my example I receive the > > stack trace from > > > > above on the sf.create() method. > > > > > > > > On 11/4/07, Liu, Jervis <[EMAIL PROTECTED]> wrote: > > > > > > > >> I probabaly should remove JAX-WS style client codes from > > restful_http_binding demo, as it constantly causes > > confusions. In theory, JAX-WS style client APIs should work > > with RESTful services that published using CXF HTTP binding, > > as this is symmetric to what the server side has to do to > > marshal/unmarshal request/response. But in reality, this does > > not work because a). This JAX-WS style client APIs support is > > not completed yet. b). I don't think there will be much value > > added by supporting JAX-WS style client APIs. This JAX-WS > > style client APIs wont work without a WSDL, most RESTful > > services wont have a WSDL. More comments about client side > > REST API support can be found in [1]. > > > >> > > > >> [1]. > > http://www.nabble.com/Using-verbs-other-than-GET-from-a-RESTfu > > l-client-application-tf4628659.html > > > >> > > > >> Cheers, > > > >> Jervis > > > >> > > > >> > > > >>> -----Original Message----- > > > >>> From: Todd Orr [mailto:[EMAIL PROTECTED] > > > >>> Sent: 2007?11?5? 10:41 > > > >>> To: [email protected] > > > >>> Subject: ClientFactoryBean AbstractMethodError > > > >>> > > > >>> > > > >>> I have been trying to get a REST service up and > > running. I believe the > > > >>> server is up. However, creating the client is > > problematic. Using the > > > >>> following code borrowed from the bundled rest sample: > > > >>> > > > >>> JaxWsProxyFactoryBean sf = new JaxWsProxyFactoryBean(); > > > >>> sf.setServiceClass(MyServiceInterface.class); > > > >>> > > > >>> // Turn off wrapped mode to make our xml prettier > > > >>> sf.getServiceFactory().setWrapped(false); > > > >>> > > > >>> // Use the HTTP Binding which understands the Java Rest > > Annotations > > > >>> sf.getClientFactoryBean().setBindingId(HttpBindingFactory.HTTP > > > >>> > > > >> _BINDING_ID); > > > >> > > > >>> sf.setAddress("http://localhost:8080/rest/"); > > > >>> this.service = (MyServiceInterface) sf.create(); > > > >>> > > > >>> > > > >>> I receive the following exception: > > > >>> > > > >>> java.lang.AbstractMethodError: > > > >>> org.apache.xerces.dom.DocumentImpl.getInputEncoding()Ljava/lan > > > >>> > > > >> g/String; > > > >> > > > >>> at > > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > >>> at > > > >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess > > > >>> > > > >> orImpl.java:39) > > > >> > > > >>> at > > > >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth > > > >>> > > > >> odAccessorImpl.java:25) > > > >> > > > >>> at java.lang.reflect.Method.invoke(Method.java:597) > > > >>> at > > > >>> org.apache.ws.commons.schema.utils.DOMUtil.getInputEncoding(DO > > > >>> MUtil.java:594) > > > >>> at > > > >>> org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchem > > > >>> aCollection.java:348) > > > >>> at > > > >>> org.apache.cxf.databinding.source.AbstractDataBinding.addSchem > > > >>> aDocument(AbstractDataBinding.java:73) > > > >>> at > > > >>> org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding > > > >>> > > > >> .java:224) > > > >> > > > >>> at > > > >>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.bu > > > >>> ildServiceFromClass(ReflectionServiceFactoryBean.java:293) > > > >>> at > > > >>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.in > > > >>> itializeServiceModel(ReflectionServiceFactoryBean.java:333) > > > >>> at > > > >>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.cr > > > >>> eate(ReflectionServiceFactoryBean.java:151) > > > >>> at > > > >>> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(Ja > > > >>> > > > >> xWsServiceFactoryBean.java:93) > > > >> > > > >>> at > > > >>> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.creat > > > >>> eEndpoint(AbstractWSDLBasedEndpointFactory.java:74) > > > >>> at > > > >>> org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactory > > > >>> > > > >> Bean.java:51) > > > >> > > > >>> at > > > >>> org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientPr > > > >>> > > > >> oxyFactoryBean.java:89) > > > >> > > > >>> at > > com.foo.bar.RestTest.injectDependencies(RestTest.java:30) > > > >>> at > > > >>> org.springframework.test.AbstractDependencyInjectionSpringCont > > > >>> extTests.prepareTestInstance(AbstractDependencyInjectionSpring > > > >>> > > > >> ContextTests.java:158) > > > >> > > > >>> at > > > >>> org.springframework.test.AbstractSingleSpringContextTests.setU > > > >>> p(AbstractSingleSpringContextTests.java:88) > > > >>> at junit.framework.TestCase.runBare(TestCase.java:125) > > > >>> at > > > >>> org.springframework.test.ConditionalTestCase.runBare(Condition > > > >>> > > > >> alTestCase.java:69) > > > >> > > > >>> at > > junit.framework.TestResult$1.protect(TestResult.java:106) > > > >>> at > > junit.framework.TestResult.runProtected(TestResult.java:124) > > > >>> at junit.framework.TestResult.run(TestResult.java:109) > > > >>> at junit.framework.TestCase.run(TestCase.java:118) > > > >>> at junit.framework.TestSuite.runTest(TestSuite.java:208) > > > >>> at junit.framework.TestSuite.run(TestSuite.java:203) > > > >>> at > > > >>> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReferen > > > >>> ce.run(JUnit3TestReference.java:130) > > > >>> at > > > >>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestEx > > > >>> > > > >> ecution.java:38) > > > >> > > > >>> at > > > >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTest > > > >>> s(RemoteTestRunner.java:460) > > > >>> at > > > >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTest > > > >>> s(RemoteTestRunner.java:673) > > > >>> at > > > >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(Rem > > > >>> > > > >> oteTestRunner.java:386) > > > >> > > > >>> at > > > >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(Re > > > >>> > > > >> moteTestRunner.java:196) > > > >> > > > >>> I read a post regarding a similar error due to the > > XmlSchema version. > > > >>> However, after checking, I do have the 1.3.2 version > > specified in that > > > >>> post > > > >>> > > (http://www.nabble.com/wsdl2java-problem-tf4651922.html#a13290874). > > > >>> > > > >>> Anyone have any other ideas? > > > >>> > > > >>> Thanks. > > > >>> > > > >>> > > > >> ---------------------------- > > > >> IONA Technologies PLC (registered in Ireland) > > > >> Registered Number: 171387 > > > >> Registered Address: The IONA Building, Shelbourne Road, > > Dublin 4, Ireland > > > >> > > > >> > > > > > > > > > > > > > > > ---------------------------- > IONA Technologies PLC (registered in Ireland) > Registered Number: 171387 > Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland >
