Just answer the annotations question,
CXF has two front-end, one is simple-front-end which do not consume the
WebService related annotation , the other is Jaxws-front-end which looks
up the annotation.
You can specify to use different front-end in you pom.xml :)
Cheers,
Willem
Marc Baumgartner wrote:
Hi Freeman,
I am working with maven and I can't find a repository with 2.1 libs. My pom
contains these libs:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>2.0-incubator-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.0-incubator-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-databinding-aegis</artifactId>
<version>2.0-incubator-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.0-incubator-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-bindings-soap</artifactId>
<version>2.0-incubator-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-addr</artifactId>
<version>2.0-incubator-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-policy</artifactId>
<version>2.0-incubator-SNAPSHOT</version>
</dependency>
Do I really have to define every web service by its own with
implementation class and url? Is it not possible that cxf gets this information
from the
annotations?
Answer: Consider the scenario that we are using code first way, so
HelloWorldImpl may not have all annotations as we need.
Hm, why not let the user config if he wants let cfx get information from the annotations like xfire?
Regards,
Marc
-------- Original-Nachricht --------
Datum: Fri, 13 Jul 2007 17:47:03 +0800
Von: Freeman Fang <[EMAIL PROTECTED]>
An: [email protected]
Betreff: Re:
Hi Marc,
The redunadant declaration of address and implementing class is
unnecessary, actually the context could be
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
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">
<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" />
<bean id="aegisDatabinding"
class="org.apache.cxf.aegis.databinding.AegisDatabinding"/>
<bean id="serviceFactory"
class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
<property name="dataBinding" ref="aegisDatabinding"/>
</bean>
<jaxws:endpoint
id="helloWorld"
implementor="demo.spring.HelloWorldImpl"
address="/HelloWorld">
<jaxws:serviceFactory>
<ref bean="serviceFactory"/>
</jaxws:serviceFactory>
</jaxws:endpoint>
</beans>
For Could not find destination factory for transport
http://schemas.xmlsoap.org/soap/http, I cann't reproduce it and it
should be classpath issue, can you append your classpath? Or just add
cxf-2.1-incubator-SNAPSHOT.jar from cxf kit on your classpath and try it
again?
Do I really have to define every web service by its own with
implementation class and url? Is it not possible that cxf gets this information
from the
annotations?
Answer: Consider the scenario that we are using code first way, so
HelloWorldImpl may not have all annotations as we need.
Best Regards
Freeman
Marc Baumgartner wrote:
Hi Freeman,
is it possible to avoid the redunadant declaration of the adress and
implementing class?
With your example configuration I have to define these parameters twice.
Do I really have to define every web service by its own with
implementation class and url? Is it not possible that cxf gets this information
from
the annotations?
When I start my test I get again an exception:
Caused by: java.lang.RuntimeException: Could not find destination
factory for transport http://schemas.xmlsoap.org/soap/http
Same question as in my other mail :-)
Regards,
Marc
-------- Original-Nachricht --------
Datum: Fri, 13 Jul 2007 16:24:57 +0800
Von: Freeman Fang <[EMAIL PROTECTED]>
An: [email protected]
Betreff: Re:
Hi Marc,
You can do it like
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
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">
<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" />
<bean id="serviceClass" class="demo.spring.HelloWorldImpl"/>
<bean id="aegisDatabinding"
class="org.apache.cxf.aegis.databinding.AegisDatabinding"/>
<bean id="serviceFactory"
class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
<property name="dataBinding" ref="aegisDatabinding"/>
</bean>
<bean id="serverBeanFactory"
class="org.apache.cxf.frontend.ServerFactoryBean"
init-method="create">
<property name="address" value="/HelloWorld"/>
<property name="bindingId"
value="http://schemas.xmlsoap.org/soap/"/>
<property name="serviceBean" ref="serviceClass"/>
<property name="serviceFactory" ref="serviceFactory"/>
</bean>
<jaxws:endpoint
id="helloWorld"
implementor="demo.spring.HelloWorldImpl"
address="/HelloWorld">
<jaxws:serviceFactory>
<ref bean="serviceFactory"/>
</jaxws:serviceFactory>
</jaxws:endpoint>
</beans>
Best Regards
Freeman
Marc Baumgartner wrote:
How do I configure in my applicationContext.xml to use Aegis?
Is there anywhere an example?
Regards
Marc
-------- Original-Nachricht --------
Datum: Thu, 12 Jul 2007 13:35:58 -0600
Von: "Dan Diephouse" <[EMAIL PROTECTED]>
An: [email protected]
Betreff: Re:
JAXB can't handle interfaces. What you want to do is configure your
service
to use the Aegis databinding library from XFire instead:
http://cwiki.apache.org/CXF20DOC/aegis-databinding.html
Aegis will handle just about any datatypes you throw at it. Hope that
helps,
- Dan
On 7/12/07, Marc Baumgartner <[EMAIL PROTECTED]> wrote:
Hi,
in Xfire it is possible to define a complex result object from a web
service as an interface like this:
public interface Greeting {
public abstract void setMessage(String msg);
public abstract String getMessage();
}
@WebService
public interface HelloWorldService {
@WebMethod
@WebResult(name="Greeting")
public List<hello.impl.GreetingImpl> getGreeting(String
name);
@WebMethod
public String sayHello(String name);
}
With CXF a signature like this causes an error. It seems that JAXB
can
not
handle the result interfaces. Is it possible to "tell" JAXB to
accept
the
interfaces? Can I use another bindung lib? How do i configure it?
Regards,
Marc
--
Psssst! Schon vom neuen GMX MultiMessenger gehört?
Der kanns mit allen: http://www.gmx.net/de/go/multimessenger
--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog