You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Daniel Kulp <dk...@apache.org> on 2008/11/03 20:09:46 UTC

Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?

On Friday 31 October 2008 12:02:51 pm Ostermueller, Erik wrote:
> Hi, I'm still looking for feedback on this in case someone has got a
> minute.
> --Erik

No, this can be accomplished in just the normal cxf-servlet.xml.      If you 
use jaxws:endpoint element in your beans to publish it, you can add:

    <jaxws:serviceFactory>
        <bean class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
                <property name="serviceConfigurations">
                        <list>
                                <bean class="com.your.ServiceConfiguration"/>

                                <bean 
class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
                        </list>
                </property>
        </bean>
    </jaxws:serviceFactory>


Dan


>
> -----Original Message-----
> From: Ostermueller, Erik [mailto:Erik.Ostermueller@fnis.com]
> Sent: Tuesday, October 28, 2008 8:30 AM
> To: Daniel Kulp; users@cxf.apache.org
> Subject: RE: [revisiting] jax-ws @WebParam "Required" annotation?
>
> With our setup, CXFServlet loads with web.xml.
> I'm thinking I should subclass CXFServlet and then configure the
> services (like you showed me below) in that subclass after my beans.xml
> is loaded.  Does that sound right?
>
> -----Original Message-----
> From: Daniel Kulp [mailto:dkulp@apache.org]
> Sent: Monday, October 27, 2008 2:21 PM
> To: users@cxf.apache.org
> Cc: Ostermueller, Erik
> Subject: Re: [revisiting] jax-ws @WebParam "Required" annotation?
>
>
> If you use the ServerFactoryBeans (and not just
> "Endpoint.publish(...)"), you can call:
>
> factory.getServiceFactory().getConfigurations()
> or setConfigurations() to manipulate the list of configurations.  In
> general, you would do something like:
>
> factory.getServiceFactory().getConfigurations().add(0, yourConfig);
>
> Dan
>
> On Monday 27 October 2008 1:05:22 pm Ostermueller, Erik wrote:
> > http://www.nabble.com/jax-ws-@WebParam-%22Required%22-annotation--td19
> > 83
> > 7631.html
> >
> > In the above thread, Dan wrote:
> > >> With 2.1.3, you will be able to write a ServiceConfiguration object
> >
> > that
> >
> > >> can override the getWrapperPartMinOccurs method to return 1 instead
> >
> > of
> >
> > >> 0.  You can try the 2.1.3 snapshots if you want to play with that.
> >
> > I'm doing java-first and would like to take a look at trying this.
> > How do you associate a custom ServiceConfiguration with the service?
> > Perhaps you could point me to a particular junit test that does
>
> this...
>
>
>
> --
> Daniel Kulp
> dkulp@apache.org
> http://dankulp.com/blog
>
> _____________
>
> The information contained in this message is proprietary and/or
> confidential. If you are not the
> intended recipient, please: (i) delete the message and all copies; (ii)
> do not disclose,
> distribute or use the message in any manner; and (iii) notify the sender
> immediately. In addition,
> please be aware that any message addressed to our domain is subject to
> archiving and review by
> persons other than the intended recipient. Thank you.
> _____________
>
> _____________
>
> The information contained in this message is proprietary and/or
> confidential. If you are not the intended recipient, please: (i) delete the
> message and all copies; (ii) do not disclose, distribute or use the message
> in any manner; and (iii) notify the sender immediately. In addition, please
> be aware that any message addressed to our domain is subject to archiving
> and review by persons other than the intended recipient. Thank you.
> _____________



-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog

Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?

Posted by Daniel Kulp <dk...@apache.org>.
With the latest snapshots, this should be pretty easy now.   Subclass 
AbstractServiceConfiguration and override the methods:

    public Long getWrapperPartMinOccurs(MessagePartInfo mpi)
    public Boolean isWrapperPartNillable(MessagePartInfo mpi)

In both cases, you can call 
mpi.getProperty("parameter.annotations");
which should return the  Annotation[].  You can examine the Annotation[] to 
chose what to return there or return "null" if you want the default behavior 
to occur.

Then, configure in your ServiceConfiguration object into the factory.

Dan



On Tuesday 02 December 2008 12:52:30 pm Ostermueller, Erik wrote:
> Replying to self here.
>
> It looks like I could use
> Annotation[] getAnnotations()
> on java.lang.Class to read which fields have '@Required'.
>
> -----Original Message-----
> From: Ostermueller, Erik [mailto:Erik.Ostermueller@fnis.com]
> Sent: Monday, December 01, 2008 3:47 PM
> To: users@cxf.apache.org
> Subject: RE: FW: [revisiting] jax-ws @WebParam "Required" annotation?
>
> Dan,
>
> Your suggestion below did the trick, thanks.
>
> ###############################################
>   <jaxws:server id="jaxwsService"
> serviceClass="demo.hw.server.HelloWorld" address="/hello_world">
>   	<jaxws:serviceBean>
>   		<bean class="demo.hw.server.HelloWorldImpl" />
>   	</jaxws:serviceBean>
>   </jaxws:server>
>
>
> @WebService
> public interface HelloWorld {
>     String sayHiToUser(User user, String foo);
> }
> ###############################################
>
> I loaded the above configuration under a debugger and found all kinds of
> meta data about the two parameters, user and foo.
> All this would be enough to code support for slapping @Required=true
> either of these parameters.
>
> However, what I'm now realizing is that I'd also like support for adding
> @Required=true to the _fields_ on the User class, which might have
> getters/setters for userId, firstName, lastName and emailAddress, just
> as an example.
>
> I didn't see any meta-data for dealing with the attributes of parameter
> -- just the parameter itself.
> Did I just miss that?  If not, could you suggest an approach for
> allowing us to add @Required=true to fields on, in my example, the User
> class?
>
> Thanks,
> --Erik
>
>
>
>
> -----Original Message-----
> From: Daniel Kulp [mailto:dkulp@apache.org]
> Sent: Wednesday, November 05, 2008 2:50 PM
> To: users@cxf.apache.org
> Cc: Ostermueller, Erik
> Subject: Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?
>
>
> Hmmmmm..............   I think I see what may be causing this.
> Unfortunately, being at apachecon, I don't really have the time to
> really
> make sure.
>
> Are you able to checkout CXF from SVN and build it?   If so, can you try
>
> changing:
> rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/WrapperClassGenerat
> or.java
> line 306 from:
> av0.visit("required", "true");
> to
> av0.visit("required", Boolean.TRUE);
> if you build and try with that, I think that would fix it.
>
>
> Dan
>
> On Wednesday 05 November 2008 1:28:28 pm Ostermueller, Erik wrote:
> > Dan wrote:
> > >> No, this can be accomplished in just the normal cxf-servlet.xml.
> >
> > If you
> >
> > >> use jaxws:endpoint element in your beans to publish it, you can
>
> add:
> > >>    <jaxws:serviceFactory>
> > >>        <bean
> >
> > class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> >
> > >>                <property name="serviceConfigurations">
> > >> <snip!>
> >
> > I'm giving this a try, but I'm getting errors at startup.  Cxf 2.1.3 /
> > tomcat 5.x / winxp.
> >
> > Caused by: javax.xml.ws.WebServiceException:
> > java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
>
> typed
>
> > data found for annotation element public abstract boolean
> > javax.xml.bind.annotation.XmlElement.required() (Found data of type
> > class java.lang.String[true])
> > The full stack trace is below, where the you can the println I added
>
> to
>
> > the method I'm overriding (just experimenting now).
> > So, my class is getting loaded but then experiencing problems later.
> > W/o the <jaxws:serviceFactory>, this is working fine.
> >
> > I can only find one javax.xml.bind.annotation.XmlElement.
> > I've googled for other versions of this file and can't find ones with
> > varying type -- only ones with and w/o this method.
> > Here is the one that comes with cxf:
>
> ########################################################################
>
> > ###
> > F:\temp\xmlElement>javap -classpath jaxb-api-2.1.jar
> > javax.xml.bind.annotation.XmlElement
> >
> > Compiled from "XmlElement.java"
> > public interface javax.xml.bind.annotation.XmlElement extends
> > java.lang.annotation.Annotation{
> >     public abstract java.lang.String name();
> >     public abstract boolean nillable();
> >     public abstract boolean required();
> >     public abstract java.lang.String namespace();
> >     public abstract java.lang.String defaultValue();
> >     public abstract java.lang.Class type();
> > }
> >
> > Here is the class I'm injecting:
>
> ########################################################################
>
> > ###
> > package com.fnf.dw.soap.util;
> >
> > import org.apache.cxf.service.factory.DefaultServiceConfiguration;
> > import org.apache.cxf.service.model.MessagePartInfo;
> >
> > public class RequiredFieldProcessor extends
>
> DefaultServiceConfiguration
>
> > {
> >
> >     public Long getWrapperPartMinOccurs(MessagePartInfo mpi) {
> >
> > 		//This worked just fine
> >
> > System.out.println("RequiredFieldProcessor#getWrapperPartMinOccurs ["
>
> +
>
> > mpi.getName() + "] toString [" + mpi.toString() + "]");
> >
> > 		return super.getWrapperPartMaxOccurs(mpi);
> >     }
> > }
> >
> >
> > 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:beans="http://www.springframework.org/schema/beans"
> > 	xmlns:jaxws="http://cxf.apache.org/jaxws"
> > 	xmlns:cxf="http://cxf.apache.org/core"
> > 	xsi:schemaLocation="
> > http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
> > 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" />
> >
> > 	<jaxws:endpoint
> > 	  id="idCreditLineForceApproval"
>
> implementor="com.fnf.dw.soap.sa.creditLine.CreditLineForceApprovalImpl05
>
> > "
> > 	  address="/ForceApproval" />
> >
> > 	<jaxws:endpoint
> > 	  id="idCreditLineInquiry"
> >
> > implementor="com.fnf.dw.soap.sa.creditLine.CreditLineInquiryImpl05"
> > 	  address="/Inquiry">
> >
> >     	<jaxws:serviceFactory>
> >         	<bean
> > class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> > 	                <property name="serviceConfigurations">
> >     	                    <list>
> >         	                        <bean
> > class="com.fnf.dw.soap.util.RequiredFieldProcessor"/>
> >             	                    <bean
> > class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
> >                 	        </list>
> >                 	</property>
> > 	        </bean>
> >     	</jaxws:serviceFactory>
> > 	</jaxws:endpoint>
> >
> >     <bean id="logInbound"
> > class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
> >     <bean id="logOutbound"
> > class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
> >
> >     <cxf:bus>
> >         <cxf:features>
> >             <cxf:logging/>
> >         </cxf:features>
> >     </cxf:bus>
> >
> > </beans>
> >
> > More detail on the stdout
>
> ########################################################################
>
> > #########
> > RequiredFieldProcessor#getWrapperPartMinOccurs
> > [{http://creditLine.sa.soap.dw.fnf.com/}UsernameToken] toString
> > [[MessagePartInfo
> > name={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken,
> > ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken]
> > RequiredFieldProcessor#getWrapperPartMinOccurs
> > [{http://creditLine.sa.soap.dw.fnf.com/}Request] toString
> > [[MessagePartInfo name={http://creditLine.sa.soap.dw.fnf.com/}Request,
> > ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Request]
> > RequiredFieldProcessor#getWrapperPartMinOccurs
> > [{http://creditLine.sa.soap.dw.fnf.com/}Response] toString
> > [[MessagePartInfo
>
> name={http://creditLine.sa.soap.dw.fnf.com/}Response,
>
> > ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Response]
> > 2008-11-05 11:53:59,710 :
>
> DefaultSingletonBeanRegistry.destroySingletons
>
> > : Destroying singletons in
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory@17f
>
> > 2ee6: defining beans
>
> [cxf,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apa
>
> che.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.Bus
>
> ExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apach
>
> e.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryMana
>
> ger,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.tr
>
> ansport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apac
>
> he.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.
>
> apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.Serv
>
> erRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf
>
> .endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHan
>
> dlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache
>
> .cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,or
>
> g.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.bin
>
> ding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFa
>
> ctory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.
>
> transport.servlet.ServletTransportFactory,idCreditLineForceApproval,idCr
>
> editLineInquiry,idCreditLineCancelApproval,idCreditLineApproval,logInbou
>
> > nd,logOutbound]; root of factory hierarchy
> > 2008-11-05 11:53:59,742 : ContextLoader.initWebApplicationContext :
> > Context initialization failed
> > org.springframework.beans.factory.BeanCreationException: Error
>
> creating
>
> > bean with name 'idCreditLineInquiry': Invocation of init method
>
> failed;
>
> > nested exception is javax.xml.ws.WebServiceException:
> > java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
>
> typed
>
> > data found for annotation element public abstract boolean
> > javax.xml.bind.annotation.XmlElement.required() (Found data of type
> > class java.lang.String[true])
> > Caused by: javax.xml.ws.WebServiceException:
> > java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
>
> typed
>
> > data found for annotation element public abstract boolean
> > javax.xml.bind.annotation.XmlElement.required() (Found data of type
> > class java.lang.String[true])
> > 	at
> > org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:267)
> > 	at
> > org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:201)
> > 	at
> > org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:394)
> > 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > 	at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
>
> > a:39)
> > 	at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
>
> > Impl.java:25)
> > 	at java.lang.reflect.Method.invoke(Method.java:585)
> > 	at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>
> tory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1242
>
> > )
> > 	at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>
> > tory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1208)
> > 	at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>
> > tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
> > 	at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>
> > tory.createBean(AbstractAutowireCapableBeanFactory.java:427)
> > 	at
>
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObjec
>
> > t(AbstractBeanFactory.java:249)
> > 	at
>
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.g
>
> > etSingleton(DefaultSingletonBeanRegistry.java:155)
> > 	at
>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
>
> > stractBeanFactory.java:246)
> > 	at
>
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
>
> > stractBeanFactory.java:160)
> > 	at
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory.pre
>
> > InstantiateSingletons(DefaultListableBeanFactory.java:291)
> > 	at
>
> org.springframework.context.support.AbstractApplicationContext.refresh(A
>
> > bstractApplicationContext.java:352)
> > 	at
>
> org.springframework.web.context.ContextLoader.createWebApplicationContex
>
> > t(ContextLoader.java:246)
> > 	at
>
> org.springframework.web.context.ContextLoader.initWebApplicationContext(
>
> > ContextLoader.java:189)
> > 	at
>
> org.springframework.web.context.ContextLoaderListener.contextInitialized
>
> > (ContextLoaderListener.java:49)
> > 	at
>
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.j
>
> > ava:3831)
> > 	at
>
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4323
>
> > )
> > 	at
>
> org.objectweb.jonas.web.catalina50.JOnASStandardContext.start(JOnASStand
>
> > ardContext.java:221)
> > 	at
>
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.ja
>
> > va:823)
> > 	at
>
> org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:121
>
> > )
> > 	at
>
> org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerB
>
> > ase.java:143)
> > 	at java.security.AccessController.doPrivileged(Native Method)
> > 	at
>
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805)
>
> > 	at
> > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
> > 	at
>
> org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doRe
>
> > gisterWar(CatalinaJWebContainerServiceImpl.java:567)
> > 	at
>
> org.objectweb.jonas.web.AbsJWebContainerServiceImpl.registerWar(AbsJWebC
>
> > ontainerServiceImpl.java:802)
> > 	at
>
> org.objectweb.jonas.web.AbsJWebContainerServiceImpl.doStart(AbsJWebConta
>
> > inerServiceImpl.java:368)
> > 	at
>
> org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doSt
>
> > art(CatalinaJWebContainerServiceImpl.java:303)
> > 	at
>
> org.objectweb.jonas.service.AbsServiceImpl.start(AbsServiceImpl.java:80)
>
> > 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > 	at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
>
> > a:39)
> > 	at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
>
> > Impl.java:25)
> > 	at java.lang.reflect.Method.invoke(Method.java:585)
> > 	at
>
> org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.invo
>
> > ke(CatalinaJWebContainerServiceWrapper.java:156)
> > 	at
>
> org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.star
>
> > t(CatalinaJWebContainerServiceWrapper.java:527)
> > 	at
>
> org.objectweb.jonas.service.ServiceManager.startServices(ServiceManager.
>
> > java:313)
> > 	at org.objectweb.jonas.server.Server.start(Server.java:555)
> > 	at org.objectweb.jonas.server.Server.main(Server.java:179)
> > 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > 	at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
>
> > a:39)
> > 	at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
>
> > Impl.java:25)
> > 	at java.lang.reflect.Method.invoke(Method.java:585)
> > 	at org.objectweb.jonas.server.Bootstrap.main(Bootstrap.java:97)
> > Caused by: java.lang.annotation.AnnotationTypeMismatchException:
> > Incorrectly typed data found for annotation element public abstract
> > boolean javax.xml.bind.annotation.XmlElement.required() (Found data of
> > type class java.lang.String[true])
> > 	at
>
> sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy.generateExce
>
> > ption(AnnotationTypeMismatchExceptionProxy.java:38)
> > 	at
>
> sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvo
>
> > cationHandler.java:56)
> > 	at $Proxy31.required(Unknown Source)
> > 	at
>
> com.sun.xml.bind.v2.model.annotation.XmlElementQuick.required(XmlElement
>
> > Quick.java:48)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl.getTypes(ElementP
>
> > ropertyInfoImpl.java:139)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.RuntimeElementPropertyInfoImpl.getTypes(R
>
> > untimeElementPropertyInfoImpl.java:86)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.size(ElementPro
>
> > pertyInfoImpl.java:78)
> > 	at java.util.AbstractList$Itr.hasNext(AbstractList.java:416)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
>
> > va:255)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
>
> > odelBuilder.java:98)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
>
> > odelBuilder.java:79)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
>
> > va:209)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
>
> > odelBuilder.java:93)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
>
> > odelBuilder.java:79)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
>
> > a:315)
> > 	at
>
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
>
> > a:330)
> > 	at
>
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextIm
>
> > pl.java:432)
> > 	at
>
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:
> > 286)
> > 	at
>
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139
>
> > )
> > 	at
>
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117
>
> > )
> > 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > 	at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
>
> > a:39)
> > 	at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
>
> > Impl.java:25)
> > 	at java.lang.reflect.Method.invoke(Method.java:585)
> > 	at
> > javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:214)
> > 	at javax.xml.bind.ContextFinder.find(ContextFinder.java:375)
> > 	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
> > 	at
>
> org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBData
>
> > Binding.java:532)
> > 	at
>
> org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:282)
>
> > 	at
>
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildService
>
> > FromClass(ReflectionServiceFactoryBean.java:359)
> > 	at
>
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromCla
>
> > ss(JaxWsServiceFactoryBean.java:519)
> > 	at
>
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeSe
>
> > rviceModel(ReflectionServiceFactoryBean.java:410)
> > 	at
>
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(Refle
>
> > ctionServiceFactoryBean.java:189)
> > 	at
>
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsService
>
> > FactoryBean.java:164)
> > 	at
>
> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(
>
> > AbstractWSDLBasedEndpointFactory.java:100)
> > 	at
>
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:
> > 117)
> > 	at
>
> org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBea
>
> > n.java:168)
> > 	at
> > org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:336)
> > 	at
> > org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:251)
> > 	... 47 more
> > 2008-11-05 11:53:59,789 : StandardContext.start : Error listenerStart
> > 2008-11-05 11:53:59,789 : StandardContext.start : Context startup
>
> failed
>
> > due to previous errors
>
> ########################################################################
>
> > #########
> >
> > Thanks,
> > --Erik
> >
> > -----Original Message-----
> > From: Daniel Kulp [mailto:dkulp@apache.org]
> > Sent: Monday, November 03, 2008 1:10 PM
> > To: users@cxf.apache.org
> > Cc: Ostermueller, Erik
> > Subject: Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?
> >
> > On Friday 31 October 2008 12:02:51 pm Ostermueller, Erik wrote:
> > > Hi, I'm still looking for feedback on this in case someone has got a
> > > minute.
> > > --Erik
> >
> > No, this can be accomplished in just the normal cxf-servlet.xml.
>
> If
>
> > you
> > use jaxws:endpoint element in your beans to publish it, you can add:
> >
> >     <jaxws:serviceFactory>
> >         <bean
> > class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> >                 <property name="serviceConfigurations">
> >                         <list>
> >                                 <bean
> > class="com.your.ServiceConfiguration"/>
> >
> >                                 <bean
> > class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
> >                         </list>
> >                 </property>
> >         </bean>
> >     </jaxws:serviceFactory>
> >
> >
> > Dan
> >
> > > -----Original Message-----
> > > From: Ostermueller, Erik [mailto:Erik.Ostermueller@fnis.com]
> > > Sent: Tuesday, October 28, 2008 8:30 AM
> > > To: Daniel Kulp; users@cxf.apache.org
> > > Subject: RE: [revisiting] jax-ws @WebParam "Required" annotation?
> > >
> > > With our setup, CXFServlet loads with web.xml.
> > > I'm thinking I should subclass CXFServlet and then configure the
> > > services (like you showed me below) in that subclass after my
> >
> > beans.xml
> >
> > > is loaded.  Does that sound right?
> > >
> > > -----Original Message-----
> > > From: Daniel Kulp [mailto:dkulp@apache.org]
> > > Sent: Monday, October 27, 2008 2:21 PM
> > > To: users@cxf.apache.org
> > > Cc: Ostermueller, Erik
> > > Subject: Re: [revisiting] jax-ws @WebParam "Required" annotation?
> > >
> > >
> > > If you use the ServerFactoryBeans (and not just
> > > "Endpoint.publish(...)"), you can call:
> > >
> > > factory.getServiceFactory().getConfigurations()
> > > or setConfigurations() to manipulate the list of configurations.  In
> > > general, you would do something like:
> > >
> > > factory.getServiceFactory().getConfigurations().add(0, yourConfig);
> > >
> > > Dan
> > >
> > > On Monday 27 October 2008 1:05:22 pm Ostermueller, Erik wrote:
> >
> > http://www.nabble.com/jax-ws-@WebParam-%22Required%22-annotation--td19
> >
> > > > 83
> > > > 7631.html
> > > >
> > > > In the above thread, Dan wrote:
> > > > >> With 2.1.3, you will be able to write a ServiceConfiguration
> >
> > object
> >
> > > > that
> > > >
> > > > >> can override the getWrapperPartMinOccurs method to return 1
> >
> > instead
> >
> > > > of
> > > >
> > > > >> 0.  You can try the 2.1.3 snapshots if you want to play with
> >
> > that.
> >
> > > > I'm doing java-first and would like to take a look at trying this.
> > > > How do you associate a custom ServiceConfiguration with the
>
> service?
>
> > > > Perhaps you could point me to a particular junit test that does
> > >
> > > this...
> > >
> > >
> > >
> > > --
> > > Daniel Kulp
> > > dkulp@apache.org
> > > http://dankulp.com/blog
> > >
> > > _____________
> > >
> > > The information contained in this message is proprietary and/or
> > > confidential. If you are not the
> > > intended recipient, please: (i) delete the message and all copies;
> >
> > (ii)
> >
> > > do not disclose,
> > > distribute or use the message in any manner; and (iii) notify the
> >
> > sender
> >
> > > immediately. In addition,
> > > please be aware that any message addressed to our domain is subject
>
> to
>
> > > archiving and review by
> > > persons other than the intended recipient. Thank you.
> > > _____________
> > >
> > > _____________
> > >
> > > The information contained in this message is proprietary and/or
> > > confidential. If you are not the intended recipient, please: (i)
> >
> > delete the
> >
> > > message and all copies; (ii) do not disclose, distribute or use the
> >
> > message
> >
> > > in any manner; and (iii) notify the sender immediately. In addition,
> >
> > please
> >
> > > be aware that any message addressed to our domain is subject to
> >
> > archiving
> >
> > > and review by persons other than the intended recipient. Thank you.
> > > _____________



-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog

RE: FW: [revisiting] jax-ws @WebParam "Required" annotation?

Posted by "Ostermueller, Erik" <Er...@fnis.com>.
Replying to self here.

It looks like I could use 
Annotation[] getAnnotations()
on java.lang.Class to read which fields have '@Required'.

-----Original Message-----
From: Ostermueller, Erik [mailto:Erik.Ostermueller@fnis.com] 
Sent: Monday, December 01, 2008 3:47 PM
To: users@cxf.apache.org
Subject: RE: FW: [revisiting] jax-ws @WebParam "Required" annotation?

Dan,

Your suggestion below did the trick, thanks.

###############################################
  <jaxws:server id="jaxwsService"
serviceClass="demo.hw.server.HelloWorld" address="/hello_world">
  	<jaxws:serviceBean>
  		<bean class="demo.hw.server.HelloWorldImpl" />
  	</jaxws:serviceBean>
  </jaxws:server>


@WebService
public interface HelloWorld {
    String sayHiToUser(User user, String foo);
}
###############################################

I loaded the above configuration under a debugger and found all kinds of
meta data about the two parameters, user and foo.
All this would be enough to code support for slapping @Required=true
either of these parameters.

However, what I'm now realizing is that I'd also like support for adding
@Required=true to the _fields_ on the User class, which might have
getters/setters for userId, firstName, lastName and emailAddress, just
as an example.

I didn't see any meta-data for dealing with the attributes of parameter
-- just the parameter itself.
Did I just miss that?  If not, could you suggest an approach for
allowing us to add @Required=true to fields on, in my example, the User
class?

Thanks,
--Erik




-----Original Message-----
From: Daniel Kulp [mailto:dkulp@apache.org] 
Sent: Wednesday, November 05, 2008 2:50 PM
To: users@cxf.apache.org
Cc: Ostermueller, Erik
Subject: Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?


Hmmmmm..............   I think I see what may be causing this.     
Unfortunately, being at apachecon, I don't really have the time to
really 
make sure.

Are you able to checkout CXF from SVN and build it?   If so, can you try

changing:
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/WrapperClassGenerat
or.java
line 306 from:
av0.visit("required", "true");
to
av0.visit("required", Boolean.TRUE);
if you build and try with that, I think that would fix it.


Dan




On Wednesday 05 November 2008 1:28:28 pm Ostermueller, Erik wrote:
> Dan wrote:
> >> No, this can be accomplished in just the normal cxf-servlet.xml.
>
> If you
>
> >> use jaxws:endpoint element in your beans to publish it, you can
add:
> >>    <jaxws:serviceFactory>
> >>        <bean
>
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>
> >>                <property name="serviceConfigurations">
> >> <snip!>
>
> I'm giving this a try, but I'm getting errors at startup.  Cxf 2.1.3 /
> tomcat 5.x / winxp.
>
> Caused by: javax.xml.ws.WebServiceException:
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
typed
> data found for annotation element public abstract boolean
> javax.xml.bind.annotation.XmlElement.required() (Found data of type
> class java.lang.String[true])
> The full stack trace is below, where the you can the println I added
to
> the method I'm overriding (just experimenting now).
> So, my class is getting loaded but then experiencing problems later.
> W/o the <jaxws:serviceFactory>, this is working fine.
>
> I can only find one javax.xml.bind.annotation.XmlElement.
> I've googled for other versions of this file and can't find ones with
> varying type -- only ones with and w/o this method.
> Here is the one that comes with cxf:
>
########################################################################
> ###
> F:\temp\xmlElement>javap -classpath jaxb-api-2.1.jar
> javax.xml.bind.annotation.XmlElement
>
> Compiled from "XmlElement.java"
> public interface javax.xml.bind.annotation.XmlElement extends
> java.lang.annotation.Annotation{
>     public abstract java.lang.String name();
>     public abstract boolean nillable();
>     public abstract boolean required();
>     public abstract java.lang.String namespace();
>     public abstract java.lang.String defaultValue();
>     public abstract java.lang.Class type();
> }
>
> Here is the class I'm injecting:
>
########################################################################
> ###
> package com.fnf.dw.soap.util;
>
> import org.apache.cxf.service.factory.DefaultServiceConfiguration;
> import org.apache.cxf.service.model.MessagePartInfo;
>
> public class RequiredFieldProcessor extends
DefaultServiceConfiguration
> {
>
>     public Long getWrapperPartMinOccurs(MessagePartInfo mpi) {
>
> 		//This worked just fine
>
> System.out.println("RequiredFieldProcessor#getWrapperPartMinOccurs ["
+
> mpi.getName() + "] toString [" + mpi.toString() + "]");
>
> 		return super.getWrapperPartMaxOccurs(mpi);
>     }
> }
>
>
> 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:beans="http://www.springframework.org/schema/beans"
> 	xmlns:jaxws="http://cxf.apache.org/jaxws"
> 	xmlns:cxf="http://cxf.apache.org/core"
> 	xsi:schemaLocation="
> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
> 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" />
>
> 	<jaxws:endpoint
> 	  id="idCreditLineForceApproval"
>
>
implementor="com.fnf.dw.soap.sa.creditLine.CreditLineForceApprovalImpl05
> "
> 	  address="/ForceApproval" />
>
> 	<jaxws:endpoint
> 	  id="idCreditLineInquiry"
>
> implementor="com.fnf.dw.soap.sa.creditLine.CreditLineInquiryImpl05"
> 	  address="/Inquiry">
>
>     	<jaxws:serviceFactory>
>         	<bean
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> 	                <property name="serviceConfigurations">
>     	                    <list>
>         	                        <bean
> class="com.fnf.dw.soap.util.RequiredFieldProcessor"/>
>             	                    <bean
> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>                 	        </list>
>                 	</property>
> 	        </bean>
>     	</jaxws:serviceFactory>
> 	</jaxws:endpoint>
>
>     <bean id="logInbound"
> class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
>     <bean id="logOutbound"
> class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
>
>     <cxf:bus>
>         <cxf:features>
>             <cxf:logging/>
>         </cxf:features>
>     </cxf:bus>
>
> </beans>
>
> More detail on the stdout
>
########################################################################
> #########
> RequiredFieldProcessor#getWrapperPartMinOccurs
> [{http://creditLine.sa.soap.dw.fnf.com/}UsernameToken] toString
> [[MessagePartInfo
> name={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken,
> ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken]
> RequiredFieldProcessor#getWrapperPartMinOccurs
> [{http://creditLine.sa.soap.dw.fnf.com/}Request] toString
> [[MessagePartInfo name={http://creditLine.sa.soap.dw.fnf.com/}Request,
> ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Request]
> RequiredFieldProcessor#getWrapperPartMinOccurs
> [{http://creditLine.sa.soap.dw.fnf.com/}Response] toString
> [[MessagePartInfo
name={http://creditLine.sa.soap.dw.fnf.com/}Response,
> ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Response]
> 2008-11-05 11:53:59,710 :
DefaultSingletonBeanRegistry.destroySingletons
>
> : Destroying singletons in
>
>
org.springframework.beans.factory.support.DefaultListableBeanFactory@17f
> 2ee6: defining beans
>
[cxf,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apa
>
che.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.Bus
>
ExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apach
>
e.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryMana
>
ger,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.tr
>
ansport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apac
>
he.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.
>
apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.Serv
>
erRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf
>
.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHan
>
dlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache
>
.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,or
>
g.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.bin
>
ding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFa
>
ctory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.
>
transport.servlet.ServletTransportFactory,idCreditLineForceApproval,idCr
>
editLineInquiry,idCreditLineCancelApproval,idCreditLineApproval,logInbou
> nd,logOutbound]; root of factory hierarchy
> 2008-11-05 11:53:59,742 : ContextLoader.initWebApplicationContext :
> Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error
creating
> bean with name 'idCreditLineInquiry': Invocation of init method
failed;
> nested exception is javax.xml.ws.WebServiceException:
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
typed
> data found for annotation element public abstract boolean
> javax.xml.bind.annotation.XmlElement.required() (Found data of type
> class java.lang.String[true])
> Caused by: javax.xml.ws.WebServiceException:
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
typed
> data found for annotation element public abstract boolean
> javax.xml.bind.annotation.XmlElement.required() (Found data of type
> class java.lang.String[true])
> 	at
> org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:267)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:201)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:394)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>
tory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1242
> )
> 	at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1208)
> 	at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
> 	at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.createBean(AbstractAutowireCapableBeanFactory.java:427)
> 	at
>
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObjec
> t(AbstractBeanFactory.java:249)
> 	at
>
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.g
> etSingleton(DefaultSingletonBeanRegistry.java:155)
> 	at
>
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
> stractBeanFactory.java:246)
> 	at
>
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
> stractBeanFactory.java:160)
> 	at
>
org.springframework.beans.factory.support.DefaultListableBeanFactory.pre
> InstantiateSingletons(DefaultListableBeanFactory.java:291)
> 	at
>
org.springframework.context.support.AbstractApplicationContext.refresh(A
> bstractApplicationContext.java:352)
> 	at
>
org.springframework.web.context.ContextLoader.createWebApplicationContex
> t(ContextLoader.java:246)
> 	at
>
org.springframework.web.context.ContextLoader.initWebApplicationContext(
> ContextLoader.java:189)
> 	at
>
org.springframework.web.context.ContextLoaderListener.contextInitialized
> (ContextLoaderListener.java:49)
> 	at
>
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.j
> ava:3831)
> 	at
>
org.apache.catalina.core.StandardContext.start(StandardContext.java:4323
> )
> 	at
>
org.objectweb.jonas.web.catalina50.JOnASStandardContext.start(JOnASStand
> ardContext.java:221)
> 	at
>
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.ja
> va:823)
> 	at
>
org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:121
> )
> 	at
>
org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerB
> ase.java:143)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at
>
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805)
> 	at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
> 	at
>
org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doRe
> gisterWar(CatalinaJWebContainerServiceImpl.java:567)
> 	at
>
org.objectweb.jonas.web.AbsJWebContainerServiceImpl.registerWar(AbsJWebC
> ontainerServiceImpl.java:802)
> 	at
>
org.objectweb.jonas.web.AbsJWebContainerServiceImpl.doStart(AbsJWebConta
> inerServiceImpl.java:368)
> 	at
>
org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doSt
> art(CatalinaJWebContainerServiceImpl.java:303)
> 	at
>
org.objectweb.jonas.service.AbsServiceImpl.start(AbsServiceImpl.java:80)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at
>
org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.invo
> ke(CatalinaJWebContainerServiceWrapper.java:156)
> 	at
>
org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.star
> t(CatalinaJWebContainerServiceWrapper.java:527)
> 	at
>
org.objectweb.jonas.service.ServiceManager.startServices(ServiceManager.
> java:313)
> 	at org.objectweb.jonas.server.Server.start(Server.java:555)
> 	at org.objectweb.jonas.server.Server.main(Server.java:179)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.objectweb.jonas.server.Bootstrap.main(Bootstrap.java:97)
> Caused by: java.lang.annotation.AnnotationTypeMismatchException:
> Incorrectly typed data found for annotation element public abstract
> boolean javax.xml.bind.annotation.XmlElement.required() (Found data of
> type class java.lang.String[true])
> 	at
>
sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy.generateExce
> ption(AnnotationTypeMismatchExceptionProxy.java:38)
> 	at
>
sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvo
> cationHandler.java:56)
> 	at $Proxy31.required(Unknown Source)
> 	at
>
com.sun.xml.bind.v2.model.annotation.XmlElementQuick.required(XmlElement
> Quick.java:48)
> 	at
>
com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl.getTypes(ElementP
> ropertyInfoImpl.java:139)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeElementPropertyInfoImpl.getTypes(R
> untimeElementPropertyInfoImpl.java:86)
> 	at
>
com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.size(ElementPro
> pertyInfoImpl.java:78)
> 	at java.util.AbstractList$Itr.hasNext(AbstractList.java:416)
> 	at
>
com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
> va:255)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:98)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:79)
> 	at
>
com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
> va:209)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:93)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:79)
> 	at
>
com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
> a:315)
> 	at
>
com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
> a:330)
> 	at
>
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextIm
> pl.java:432)
> 	at
>
com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:
> 286)
> 	at
>
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139
> )
> 	at
>
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117
> )
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at
> javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:214)
> 	at javax.xml.bind.ContextFinder.find(ContextFinder.java:375)
> 	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
> 	at
>
org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBData
> Binding.java:532)
> 	at
>
org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:282)
> 	at
>
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildService
> FromClass(ReflectionServiceFactoryBean.java:359)
> 	at
>
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromCla
> ss(JaxWsServiceFactoryBean.java:519)
> 	at
>
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeSe
> rviceModel(ReflectionServiceFactoryBean.java:410)
> 	at
>
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(Refle
> ctionServiceFactoryBean.java:189)
> 	at
>
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsService
> FactoryBean.java:164)
> 	at
>
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(
> AbstractWSDLBasedEndpointFactory.java:100)
> 	at
>
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:
> 117)
> 	at
>
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBea
> n.java:168)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:336)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:251)
> 	... 47 more
> 2008-11-05 11:53:59,789 : StandardContext.start : Error listenerStart
> 2008-11-05 11:53:59,789 : StandardContext.start : Context startup
failed
> due to previous errors
>
########################################################################
> #########
>
> Thanks,
> --Erik
>
> -----Original Message-----
> From: Daniel Kulp [mailto:dkulp@apache.org]
> Sent: Monday, November 03, 2008 1:10 PM
> To: users@cxf.apache.org
> Cc: Ostermueller, Erik
> Subject: Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?
>
> On Friday 31 October 2008 12:02:51 pm Ostermueller, Erik wrote:
> > Hi, I'm still looking for feedback on this in case someone has got a
> > minute.
> > --Erik
>
> No, this can be accomplished in just the normal cxf-servlet.xml.
If
> you
> use jaxws:endpoint element in your beans to publish it, you can add:
>
>     <jaxws:serviceFactory>
>         <bean
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>                 <property name="serviceConfigurations">
>                         <list>
>                                 <bean
> class="com.your.ServiceConfiguration"/>
>
>                                 <bean
> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>                         </list>
>                 </property>
>         </bean>
>     </jaxws:serviceFactory>
>
>
> Dan
>
> > -----Original Message-----
> > From: Ostermueller, Erik [mailto:Erik.Ostermueller@fnis.com]
> > Sent: Tuesday, October 28, 2008 8:30 AM
> > To: Daniel Kulp; users@cxf.apache.org
> > Subject: RE: [revisiting] jax-ws @WebParam "Required" annotation?
> >
> > With our setup, CXFServlet loads with web.xml.
> > I'm thinking I should subclass CXFServlet and then configure the
> > services (like you showed me below) in that subclass after my
>
> beans.xml
>
> > is loaded.  Does that sound right?
> >
> > -----Original Message-----
> > From: Daniel Kulp [mailto:dkulp@apache.org]
> > Sent: Monday, October 27, 2008 2:21 PM
> > To: users@cxf.apache.org
> > Cc: Ostermueller, Erik
> > Subject: Re: [revisiting] jax-ws @WebParam "Required" annotation?
> >
> >
> > If you use the ServerFactoryBeans (and not just
> > "Endpoint.publish(...)"), you can call:
> >
> > factory.getServiceFactory().getConfigurations()
> > or setConfigurations() to manipulate the list of configurations.  In
> > general, you would do something like:
> >
> > factory.getServiceFactory().getConfigurations().add(0, yourConfig);
> >
> > Dan
> >
> > On Monday 27 October 2008 1:05:22 pm Ostermueller, Erik wrote:
>
> http://www.nabble.com/jax-ws-@WebParam-%22Required%22-annotation--td19
>
> > > 83
> > > 7631.html
> > >
> > > In the above thread, Dan wrote:
> > > >> With 2.1.3, you will be able to write a ServiceConfiguration
>
> object
>
> > > that
> > >
> > > >> can override the getWrapperPartMinOccurs method to return 1
>
> instead
>
> > > of
> > >
> > > >> 0.  You can try the 2.1.3 snapshots if you want to play with
>
> that.
>
> > > I'm doing java-first and would like to take a look at trying this.
> > > How do you associate a custom ServiceConfiguration with the
service?
> > > Perhaps you could point me to a particular junit test that does
> >
> > this...
> >
> >
> >
> > --
> > Daniel Kulp
> > dkulp@apache.org
> > http://dankulp.com/blog
> >
> > _____________
> >
> > The information contained in this message is proprietary and/or
> > confidential. If you are not the
> > intended recipient, please: (i) delete the message and all copies;
>
> (ii)
>
> > do not disclose,
> > distribute or use the message in any manner; and (iii) notify the
>
> sender
>
> > immediately. In addition,
> > please be aware that any message addressed to our domain is subject
to
> > archiving and review by
> > persons other than the intended recipient. Thank you.
> > _____________
> >
> > _____________
> >
> > The information contained in this message is proprietary and/or
> > confidential. If you are not the intended recipient, please: (i)
>
> delete the
>
> > message and all copies; (ii) do not disclose, distribute or use the
>
> message
>
> > in any manner; and (iii) notify the sender immediately. In addition,
>
> please
>
> > be aware that any message addressed to our domain is subject to
>
> archiving
>
> > and review by persons other than the intended recipient. Thank you.
> > _____________



-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog

______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________

_____________

The information contained in this message is proprietary and/or
confidential. If you are not the 
intended recipient, please: (i) delete the message and all copies; (ii)
do not disclose, 
distribute or use the message in any manner; and (iii) notify the sender
immediately. In addition, 
please be aware that any message addressed to our domain is subject to
archiving and review by 
persons other than the intended recipient. Thank you.
_____________

_____________

The information contained in this message is proprietary and/or confidential. If you are not the 
intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, 
distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, 
please be aware that any message addressed to our domain is subject to archiving and review by 
persons other than the intended recipient. Thank you.
_____________

RE: FW: [revisiting] jax-ws @WebParam "Required" annotation?

Posted by "Ostermueller, Erik" <Er...@fnis.com>.
Dan,

Your suggestion below did the trick, thanks.

###############################################
  <jaxws:server id="jaxwsService"
serviceClass="demo.hw.server.HelloWorld" address="/hello_world">
  	<jaxws:serviceBean>
  		<bean class="demo.hw.server.HelloWorldImpl" />
  	</jaxws:serviceBean>
  </jaxws:server>


@WebService
public interface HelloWorld {
    String sayHiToUser(User user, String foo);
}
###############################################

I loaded the above configuration under a debugger and found all kinds of
meta data about the two parameters, user and foo.
All this would be enough to code support for slapping @Required=true
either of these parameters.

However, what I'm now realizing is that I'd also like support for adding
@Required=true to the _fields_ on the User class, which might have
getters/setters for userId, firstName, lastName and emailAddress, just
as an example.

I didn't see any meta-data for dealing with the attributes of parameter
-- just the parameter itself.
Did I just miss that?  If not, could you suggest an approach for
allowing us to add @Required=true to fields on, in my example, the User
class?

Thanks,
--Erik




-----Original Message-----
From: Daniel Kulp [mailto:dkulp@apache.org] 
Sent: Wednesday, November 05, 2008 2:50 PM
To: users@cxf.apache.org
Cc: Ostermueller, Erik
Subject: Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?


Hmmmmm..............   I think I see what may be causing this.     
Unfortunately, being at apachecon, I don't really have the time to
really 
make sure.

Are you able to checkout CXF from SVN and build it?   If so, can you try

changing:
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/WrapperClassGenerat
or.java
line 306 from:
av0.visit("required", "true");
to
av0.visit("required", Boolean.TRUE);
if you build and try with that, I think that would fix it.


Dan




On Wednesday 05 November 2008 1:28:28 pm Ostermueller, Erik wrote:
> Dan wrote:
> >> No, this can be accomplished in just the normal cxf-servlet.xml.
>
> If you
>
> >> use jaxws:endpoint element in your beans to publish it, you can
add:
> >>    <jaxws:serviceFactory>
> >>        <bean
>
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>
> >>                <property name="serviceConfigurations">
> >> <snip!>
>
> I'm giving this a try, but I'm getting errors at startup.  Cxf 2.1.3 /
> tomcat 5.x / winxp.
>
> Caused by: javax.xml.ws.WebServiceException:
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
typed
> data found for annotation element public abstract boolean
> javax.xml.bind.annotation.XmlElement.required() (Found data of type
> class java.lang.String[true])
> The full stack trace is below, where the you can the println I added
to
> the method I'm overriding (just experimenting now).
> So, my class is getting loaded but then experiencing problems later.
> W/o the <jaxws:serviceFactory>, this is working fine.
>
> I can only find one javax.xml.bind.annotation.XmlElement.
> I've googled for other versions of this file and can't find ones with
> varying type -- only ones with and w/o this method.
> Here is the one that comes with cxf:
>
########################################################################
> ###
> F:\temp\xmlElement>javap -classpath jaxb-api-2.1.jar
> javax.xml.bind.annotation.XmlElement
>
> Compiled from "XmlElement.java"
> public interface javax.xml.bind.annotation.XmlElement extends
> java.lang.annotation.Annotation{
>     public abstract java.lang.String name();
>     public abstract boolean nillable();
>     public abstract boolean required();
>     public abstract java.lang.String namespace();
>     public abstract java.lang.String defaultValue();
>     public abstract java.lang.Class type();
> }
>
> Here is the class I'm injecting:
>
########################################################################
> ###
> package com.fnf.dw.soap.util;
>
> import org.apache.cxf.service.factory.DefaultServiceConfiguration;
> import org.apache.cxf.service.model.MessagePartInfo;
>
> public class RequiredFieldProcessor extends
DefaultServiceConfiguration
> {
>
>     public Long getWrapperPartMinOccurs(MessagePartInfo mpi) {
>
> 		//This worked just fine
>
> System.out.println("RequiredFieldProcessor#getWrapperPartMinOccurs ["
+
> mpi.getName() + "] toString [" + mpi.toString() + "]");
>
> 		return super.getWrapperPartMaxOccurs(mpi);
>     }
> }
>
>
> 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:beans="http://www.springframework.org/schema/beans"
> 	xmlns:jaxws="http://cxf.apache.org/jaxws"
> 	xmlns:cxf="http://cxf.apache.org/core"
> 	xsi:schemaLocation="
> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
> 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" />
>
> 	<jaxws:endpoint
> 	  id="idCreditLineForceApproval"
>
>
implementor="com.fnf.dw.soap.sa.creditLine.CreditLineForceApprovalImpl05
> "
> 	  address="/ForceApproval" />
>
> 	<jaxws:endpoint
> 	  id="idCreditLineInquiry"
>
> implementor="com.fnf.dw.soap.sa.creditLine.CreditLineInquiryImpl05"
> 	  address="/Inquiry">
>
>     	<jaxws:serviceFactory>
>         	<bean
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> 	                <property name="serviceConfigurations">
>     	                    <list>
>         	                        <bean
> class="com.fnf.dw.soap.util.RequiredFieldProcessor"/>
>             	                    <bean
> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>                 	        </list>
>                 	</property>
> 	        </bean>
>     	</jaxws:serviceFactory>
> 	</jaxws:endpoint>
>
>     <bean id="logInbound"
> class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
>     <bean id="logOutbound"
> class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
>
>     <cxf:bus>
>         <cxf:features>
>             <cxf:logging/>
>         </cxf:features>
>     </cxf:bus>
>
> </beans>
>
> More detail on the stdout
>
########################################################################
> #########
> RequiredFieldProcessor#getWrapperPartMinOccurs
> [{http://creditLine.sa.soap.dw.fnf.com/}UsernameToken] toString
> [[MessagePartInfo
> name={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken,
> ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken]
> RequiredFieldProcessor#getWrapperPartMinOccurs
> [{http://creditLine.sa.soap.dw.fnf.com/}Request] toString
> [[MessagePartInfo name={http://creditLine.sa.soap.dw.fnf.com/}Request,
> ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Request]
> RequiredFieldProcessor#getWrapperPartMinOccurs
> [{http://creditLine.sa.soap.dw.fnf.com/}Response] toString
> [[MessagePartInfo
name={http://creditLine.sa.soap.dw.fnf.com/}Response,
> ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Response]
> 2008-11-05 11:53:59,710 :
DefaultSingletonBeanRegistry.destroySingletons
>
> : Destroying singletons in
>
>
org.springframework.beans.factory.support.DefaultListableBeanFactory@17f
> 2ee6: defining beans
>
[cxf,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apa
>
che.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.Bus
>
ExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apach
>
e.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryMana
>
ger,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.tr
>
ansport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apac
>
he.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.
>
apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.Serv
>
erRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf
>
.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHan
>
dlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache
>
.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,or
>
g.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.bin
>
ding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFa
>
ctory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.
>
transport.servlet.ServletTransportFactory,idCreditLineForceApproval,idCr
>
editLineInquiry,idCreditLineCancelApproval,idCreditLineApproval,logInbou
> nd,logOutbound]; root of factory hierarchy
> 2008-11-05 11:53:59,742 : ContextLoader.initWebApplicationContext :
> Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error
creating
> bean with name 'idCreditLineInquiry': Invocation of init method
failed;
> nested exception is javax.xml.ws.WebServiceException:
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
typed
> data found for annotation element public abstract boolean
> javax.xml.bind.annotation.XmlElement.required() (Found data of type
> class java.lang.String[true])
> Caused by: javax.xml.ws.WebServiceException:
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
typed
> data found for annotation element public abstract boolean
> javax.xml.bind.annotation.XmlElement.required() (Found data of type
> class java.lang.String[true])
> 	at
> org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:267)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:201)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:394)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
>
tory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1242
> )
> 	at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1208)
> 	at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
> 	at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.createBean(AbstractAutowireCapableBeanFactory.java:427)
> 	at
>
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObjec
> t(AbstractBeanFactory.java:249)
> 	at
>
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.g
> etSingleton(DefaultSingletonBeanRegistry.java:155)
> 	at
>
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
> stractBeanFactory.java:246)
> 	at
>
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
> stractBeanFactory.java:160)
> 	at
>
org.springframework.beans.factory.support.DefaultListableBeanFactory.pre
> InstantiateSingletons(DefaultListableBeanFactory.java:291)
> 	at
>
org.springframework.context.support.AbstractApplicationContext.refresh(A
> bstractApplicationContext.java:352)
> 	at
>
org.springframework.web.context.ContextLoader.createWebApplicationContex
> t(ContextLoader.java:246)
> 	at
>
org.springframework.web.context.ContextLoader.initWebApplicationContext(
> ContextLoader.java:189)
> 	at
>
org.springframework.web.context.ContextLoaderListener.contextInitialized
> (ContextLoaderListener.java:49)
> 	at
>
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.j
> ava:3831)
> 	at
>
org.apache.catalina.core.StandardContext.start(StandardContext.java:4323
> )
> 	at
>
org.objectweb.jonas.web.catalina50.JOnASStandardContext.start(JOnASStand
> ardContext.java:221)
> 	at
>
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.ja
> va:823)
> 	at
>
org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:121
> )
> 	at
>
org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerB
> ase.java:143)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at
>
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805)
> 	at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
> 	at
>
org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doRe
> gisterWar(CatalinaJWebContainerServiceImpl.java:567)
> 	at
>
org.objectweb.jonas.web.AbsJWebContainerServiceImpl.registerWar(AbsJWebC
> ontainerServiceImpl.java:802)
> 	at
>
org.objectweb.jonas.web.AbsJWebContainerServiceImpl.doStart(AbsJWebConta
> inerServiceImpl.java:368)
> 	at
>
org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doSt
> art(CatalinaJWebContainerServiceImpl.java:303)
> 	at
>
org.objectweb.jonas.service.AbsServiceImpl.start(AbsServiceImpl.java:80)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at
>
org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.invo
> ke(CatalinaJWebContainerServiceWrapper.java:156)
> 	at
>
org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.star
> t(CatalinaJWebContainerServiceWrapper.java:527)
> 	at
>
org.objectweb.jonas.service.ServiceManager.startServices(ServiceManager.
> java:313)
> 	at org.objectweb.jonas.server.Server.start(Server.java:555)
> 	at org.objectweb.jonas.server.Server.main(Server.java:179)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.objectweb.jonas.server.Bootstrap.main(Bootstrap.java:97)
> Caused by: java.lang.annotation.AnnotationTypeMismatchException:
> Incorrectly typed data found for annotation element public abstract
> boolean javax.xml.bind.annotation.XmlElement.required() (Found data of
> type class java.lang.String[true])
> 	at
>
sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy.generateExce
> ption(AnnotationTypeMismatchExceptionProxy.java:38)
> 	at
>
sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvo
> cationHandler.java:56)
> 	at $Proxy31.required(Unknown Source)
> 	at
>
com.sun.xml.bind.v2.model.annotation.XmlElementQuick.required(XmlElement
> Quick.java:48)
> 	at
>
com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl.getTypes(ElementP
> ropertyInfoImpl.java:139)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeElementPropertyInfoImpl.getTypes(R
> untimeElementPropertyInfoImpl.java:86)
> 	at
>
com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.size(ElementPro
> pertyInfoImpl.java:78)
> 	at java.util.AbstractList$Itr.hasNext(AbstractList.java:416)
> 	at
>
com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
> va:255)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:98)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:79)
> 	at
>
com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
> va:209)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:93)
> 	at
>
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:79)
> 	at
>
com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
> a:315)
> 	at
>
com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
> a:330)
> 	at
>
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextIm
> pl.java:432)
> 	at
>
com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:
> 286)
> 	at
>
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139
> )
> 	at
>
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117
> )
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at
> javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:214)
> 	at javax.xml.bind.ContextFinder.find(ContextFinder.java:375)
> 	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
> 	at
>
org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBData
> Binding.java:532)
> 	at
>
org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:282)
> 	at
>
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildService
> FromClass(ReflectionServiceFactoryBean.java:359)
> 	at
>
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromCla
> ss(JaxWsServiceFactoryBean.java:519)
> 	at
>
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeSe
> rviceModel(ReflectionServiceFactoryBean.java:410)
> 	at
>
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(Refle
> ctionServiceFactoryBean.java:189)
> 	at
>
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsService
> FactoryBean.java:164)
> 	at
>
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(
> AbstractWSDLBasedEndpointFactory.java:100)
> 	at
>
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:
> 117)
> 	at
>
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBea
> n.java:168)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:336)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:251)
> 	... 47 more
> 2008-11-05 11:53:59,789 : StandardContext.start : Error listenerStart
> 2008-11-05 11:53:59,789 : StandardContext.start : Context startup
failed
> due to previous errors
>
########################################################################
> #########
>
> Thanks,
> --Erik
>
> -----Original Message-----
> From: Daniel Kulp [mailto:dkulp@apache.org]
> Sent: Monday, November 03, 2008 1:10 PM
> To: users@cxf.apache.org
> Cc: Ostermueller, Erik
> Subject: Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?
>
> On Friday 31 October 2008 12:02:51 pm Ostermueller, Erik wrote:
> > Hi, I'm still looking for feedback on this in case someone has got a
> > minute.
> > --Erik
>
> No, this can be accomplished in just the normal cxf-servlet.xml.
If
> you
> use jaxws:endpoint element in your beans to publish it, you can add:
>
>     <jaxws:serviceFactory>
>         <bean
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>                 <property name="serviceConfigurations">
>                         <list>
>                                 <bean
> class="com.your.ServiceConfiguration"/>
>
>                                 <bean
> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>                         </list>
>                 </property>
>         </bean>
>     </jaxws:serviceFactory>
>
>
> Dan
>
> > -----Original Message-----
> > From: Ostermueller, Erik [mailto:Erik.Ostermueller@fnis.com]
> > Sent: Tuesday, October 28, 2008 8:30 AM
> > To: Daniel Kulp; users@cxf.apache.org
> > Subject: RE: [revisiting] jax-ws @WebParam "Required" annotation?
> >
> > With our setup, CXFServlet loads with web.xml.
> > I'm thinking I should subclass CXFServlet and then configure the
> > services (like you showed me below) in that subclass after my
>
> beans.xml
>
> > is loaded.  Does that sound right?
> >
> > -----Original Message-----
> > From: Daniel Kulp [mailto:dkulp@apache.org]
> > Sent: Monday, October 27, 2008 2:21 PM
> > To: users@cxf.apache.org
> > Cc: Ostermueller, Erik
> > Subject: Re: [revisiting] jax-ws @WebParam "Required" annotation?
> >
> >
> > If you use the ServerFactoryBeans (and not just
> > "Endpoint.publish(...)"), you can call:
> >
> > factory.getServiceFactory().getConfigurations()
> > or setConfigurations() to manipulate the list of configurations.  In
> > general, you would do something like:
> >
> > factory.getServiceFactory().getConfigurations().add(0, yourConfig);
> >
> > Dan
> >
> > On Monday 27 October 2008 1:05:22 pm Ostermueller, Erik wrote:
>
> http://www.nabble.com/jax-ws-@WebParam-%22Required%22-annotation--td19
>
> > > 83
> > > 7631.html
> > >
> > > In the above thread, Dan wrote:
> > > >> With 2.1.3, you will be able to write a ServiceConfiguration
>
> object
>
> > > that
> > >
> > > >> can override the getWrapperPartMinOccurs method to return 1
>
> instead
>
> > > of
> > >
> > > >> 0.  You can try the 2.1.3 snapshots if you want to play with
>
> that.
>
> > > I'm doing java-first and would like to take a look at trying this.
> > > How do you associate a custom ServiceConfiguration with the
service?
> > > Perhaps you could point me to a particular junit test that does
> >
> > this...
> >
> >
> >
> > --
> > Daniel Kulp
> > dkulp@apache.org
> > http://dankulp.com/blog
> >
> > _____________
> >
> > The information contained in this message is proprietary and/or
> > confidential. If you are not the
> > intended recipient, please: (i) delete the message and all copies;
>
> (ii)
>
> > do not disclose,
> > distribute or use the message in any manner; and (iii) notify the
>
> sender
>
> > immediately. In addition,
> > please be aware that any message addressed to our domain is subject
to
> > archiving and review by
> > persons other than the intended recipient. Thank you.
> > _____________
> >
> > _____________
> >
> > The information contained in this message is proprietary and/or
> > confidential. If you are not the intended recipient, please: (i)
>
> delete the
>
> > message and all copies; (ii) do not disclose, distribute or use the
>
> message
>
> > in any manner; and (iii) notify the sender immediately. In addition,
>
> please
>
> > be aware that any message addressed to our domain is subject to
>
> archiving
>
> > and review by persons other than the intended recipient. Thank you.
> > _____________



-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog

______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________

_____________

The information contained in this message is proprietary and/or confidential. If you are not the 
intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, 
distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, 
please be aware that any message addressed to our domain is subject to archiving and review by 
persons other than the intended recipient. Thank you.
_____________

Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?

Posted by Daniel Kulp <dk...@apache.org>.
Hmmmmm..............   I think I see what may be causing this.     
Unfortunately, being at apachecon, I don't really have the time to really 
make sure.

Are you able to checkout CXF from SVN and build it?   If so, can you try 
changing:
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/WrapperClassGenerator.java
line 306 from:
av0.visit("required", "true");
to
av0.visit("required", Boolean.TRUE);
if you build and try with that, I think that would fix it.


Dan




On Wednesday 05 November 2008 1:28:28 pm Ostermueller, Erik wrote:
> Dan wrote:
> >> No, this can be accomplished in just the normal cxf-servlet.xml.
>
> If you
>
> >> use jaxws:endpoint element in your beans to publish it, you can add:
> >>    <jaxws:serviceFactory>
> >>        <bean
>
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>
> >>                <property name="serviceConfigurations">
> >> <snip!>
>
> I'm giving this a try, but I'm getting errors at startup.  Cxf 2.1.3 /
> tomcat 5.x / winxp.
>
> Caused by: javax.xml.ws.WebServiceException:
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed
> data found for annotation element public abstract boolean
> javax.xml.bind.annotation.XmlElement.required() (Found data of type
> class java.lang.String[true])
> The full stack trace is below, where the you can the println I added to
> the method I'm overriding (just experimenting now).
> So, my class is getting loaded but then experiencing problems later.
> W/o the <jaxws:serviceFactory>, this is working fine.
>
> I can only find one javax.xml.bind.annotation.XmlElement.
> I've googled for other versions of this file and can't find ones with
> varying type -- only ones with and w/o this method.
> Here is the one that comes with cxf:
> ########################################################################
> ###
> F:\temp\xmlElement>javap -classpath jaxb-api-2.1.jar
> javax.xml.bind.annotation.XmlElement
>
> Compiled from "XmlElement.java"
> public interface javax.xml.bind.annotation.XmlElement extends
> java.lang.annotation.Annotation{
>     public abstract java.lang.String name();
>     public abstract boolean nillable();
>     public abstract boolean required();
>     public abstract java.lang.String namespace();
>     public abstract java.lang.String defaultValue();
>     public abstract java.lang.Class type();
> }
>
> Here is the class I'm injecting:
> ########################################################################
> ###
> package com.fnf.dw.soap.util;
>
> import org.apache.cxf.service.factory.DefaultServiceConfiguration;
> import org.apache.cxf.service.model.MessagePartInfo;
>
> public class RequiredFieldProcessor extends DefaultServiceConfiguration
> {
>
>     public Long getWrapperPartMinOccurs(MessagePartInfo mpi) {
>
> 		//This worked just fine
>
> System.out.println("RequiredFieldProcessor#getWrapperPartMinOccurs [" +
> mpi.getName() + "] toString [" + mpi.toString() + "]");
>
> 		return super.getWrapperPartMaxOccurs(mpi);
>     }
> }
>
>
> 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:beans="http://www.springframework.org/schema/beans"
> 	xmlns:jaxws="http://cxf.apache.org/jaxws"
> 	xmlns:cxf="http://cxf.apache.org/core"
> 	xsi:schemaLocation="
> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
> 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" />
>
> 	<jaxws:endpoint
> 	  id="idCreditLineForceApproval"
>
> implementor="com.fnf.dw.soap.sa.creditLine.CreditLineForceApprovalImpl05
> "
> 	  address="/ForceApproval" />
>
> 	<jaxws:endpoint
> 	  id="idCreditLineInquiry"
>
> implementor="com.fnf.dw.soap.sa.creditLine.CreditLineInquiryImpl05"
> 	  address="/Inquiry">
>
>     	<jaxws:serviceFactory>
>         	<bean
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> 	                <property name="serviceConfigurations">
>     	                    <list>
>         	                        <bean
> class="com.fnf.dw.soap.util.RequiredFieldProcessor"/>
>             	                    <bean
> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>                 	        </list>
>                 	</property>
> 	        </bean>
>     	</jaxws:serviceFactory>
> 	</jaxws:endpoint>
>
>     <bean id="logInbound"
> class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
>     <bean id="logOutbound"
> class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
>
>     <cxf:bus>
>         <cxf:features>
>             <cxf:logging/>
>         </cxf:features>
>     </cxf:bus>
>
> </beans>
>
> More detail on the stdout
> ########################################################################
> #########
> RequiredFieldProcessor#getWrapperPartMinOccurs
> [{http://creditLine.sa.soap.dw.fnf.com/}UsernameToken] toString
> [[MessagePartInfo
> name={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken,
> ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken]
> RequiredFieldProcessor#getWrapperPartMinOccurs
> [{http://creditLine.sa.soap.dw.fnf.com/}Request] toString
> [[MessagePartInfo name={http://creditLine.sa.soap.dw.fnf.com/}Request,
> ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Request]
> RequiredFieldProcessor#getWrapperPartMinOccurs
> [{http://creditLine.sa.soap.dw.fnf.com/}Response] toString
> [[MessagePartInfo name={http://creditLine.sa.soap.dw.fnf.com/}Response,
> ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Response]
> 2008-11-05 11:53:59,710 : DefaultSingletonBeanRegistry.destroySingletons
>
> : Destroying singletons in
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory@17f
> 2ee6: defining beans
> [cxf,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apa
> che.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.Bus
> ExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apach
> e.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryMana
> ger,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.tr
> ansport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apac
> he.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.
> apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.Serv
> erRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf
> .endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHan
> dlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache
> .cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,or
> g.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.bin
> ding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFa
> ctory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.
> transport.servlet.ServletTransportFactory,idCreditLineForceApproval,idCr
> editLineInquiry,idCreditLineCancelApproval,idCreditLineApproval,logInbou
> nd,logOutbound]; root of factory hierarchy
> 2008-11-05 11:53:59,742 : ContextLoader.initWebApplicationContext :
> Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'idCreditLineInquiry': Invocation of init method failed;
> nested exception is javax.xml.ws.WebServiceException:
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed
> data found for annotation element public abstract boolean
> javax.xml.bind.annotation.XmlElement.required() (Found data of type
> class java.lang.String[true])
> Caused by: javax.xml.ws.WebServiceException:
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed
> data found for annotation element public abstract boolean
> javax.xml.bind.annotation.XmlElement.required() (Found data of type
> class java.lang.String[true])
> 	at
> org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:267)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:201)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:394)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1242
> )
> 	at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1208)
> 	at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
> 	at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
> tory.createBean(AbstractAutowireCapableBeanFactory.java:427)
> 	at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObjec
> t(AbstractBeanFactory.java:249)
> 	at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.g
> etSingleton(DefaultSingletonBeanRegistry.java:155)
> 	at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
> stractBeanFactory.java:246)
> 	at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
> stractBeanFactory.java:160)
> 	at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.pre
> InstantiateSingletons(DefaultListableBeanFactory.java:291)
> 	at
> org.springframework.context.support.AbstractApplicationContext.refresh(A
> bstractApplicationContext.java:352)
> 	at
> org.springframework.web.context.ContextLoader.createWebApplicationContex
> t(ContextLoader.java:246)
> 	at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(
> ContextLoader.java:189)
> 	at
> org.springframework.web.context.ContextLoaderListener.contextInitialized
> (ContextLoaderListener.java:49)
> 	at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.j
> ava:3831)
> 	at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4323
> )
> 	at
> org.objectweb.jonas.web.catalina50.JOnASStandardContext.start(JOnASStand
> ardContext.java:221)
> 	at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.ja
> va:823)
> 	at
> org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:121
> )
> 	at
> org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerB
> ase.java:143)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805)
> 	at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
> 	at
> org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doRe
> gisterWar(CatalinaJWebContainerServiceImpl.java:567)
> 	at
> org.objectweb.jonas.web.AbsJWebContainerServiceImpl.registerWar(AbsJWebC
> ontainerServiceImpl.java:802)
> 	at
> org.objectweb.jonas.web.AbsJWebContainerServiceImpl.doStart(AbsJWebConta
> inerServiceImpl.java:368)
> 	at
> org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doSt
> art(CatalinaJWebContainerServiceImpl.java:303)
> 	at
> org.objectweb.jonas.service.AbsServiceImpl.start(AbsServiceImpl.java:80)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at
> org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.invo
> ke(CatalinaJWebContainerServiceWrapper.java:156)
> 	at
> org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.star
> t(CatalinaJWebContainerServiceWrapper.java:527)
> 	at
> org.objectweb.jonas.service.ServiceManager.startServices(ServiceManager.
> java:313)
> 	at org.objectweb.jonas.server.Server.start(Server.java:555)
> 	at org.objectweb.jonas.server.Server.main(Server.java:179)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.objectweb.jonas.server.Bootstrap.main(Bootstrap.java:97)
> Caused by: java.lang.annotation.AnnotationTypeMismatchException:
> Incorrectly typed data found for annotation element public abstract
> boolean javax.xml.bind.annotation.XmlElement.required() (Found data of
> type class java.lang.String[true])
> 	at
> sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy.generateExce
> ption(AnnotationTypeMismatchExceptionProxy.java:38)
> 	at
> sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvo
> cationHandler.java:56)
> 	at $Proxy31.required(Unknown Source)
> 	at
> com.sun.xml.bind.v2.model.annotation.XmlElementQuick.required(XmlElement
> Quick.java:48)
> 	at
> com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl.getTypes(ElementP
> ropertyInfoImpl.java:139)
> 	at
> com.sun.xml.bind.v2.model.impl.RuntimeElementPropertyInfoImpl.getTypes(R
> untimeElementPropertyInfoImpl.java:86)
> 	at
> com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.size(ElementPro
> pertyInfoImpl.java:78)
> 	at java.util.AbstractList$Itr.hasNext(AbstractList.java:416)
> 	at
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
> va:255)
> 	at
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:98)
> 	at
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:79)
> 	at
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
> va:209)
> 	at
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:93)
> 	at
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
> odelBuilder.java:79)
> 	at
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
> a:315)
> 	at
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
> a:330)
> 	at
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextIm
> pl.java:432)
> 	at
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:
> 286)
> 	at
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139
> )
> 	at
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117
> )
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:39)
> 	at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at
> javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:214)
> 	at javax.xml.bind.ContextFinder.find(ContextFinder.java:375)
> 	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
> 	at
> org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBData
> Binding.java:532)
> 	at
> org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:282)
> 	at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildService
> FromClass(ReflectionServiceFactoryBean.java:359)
> 	at
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromCla
> ss(JaxWsServiceFactoryBean.java:519)
> 	at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeSe
> rviceModel(ReflectionServiceFactoryBean.java:410)
> 	at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(Refle
> ctionServiceFactoryBean.java:189)
> 	at
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsService
> FactoryBean.java:164)
> 	at
> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(
> AbstractWSDLBasedEndpointFactory.java:100)
> 	at
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:
> 117)
> 	at
> org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBea
> n.java:168)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:336)
> 	at
> org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:251)
> 	... 47 more
> 2008-11-05 11:53:59,789 : StandardContext.start : Error listenerStart
> 2008-11-05 11:53:59,789 : StandardContext.start : Context startup failed
> due to previous errors
> ########################################################################
> #########
>
> Thanks,
> --Erik
>
> -----Original Message-----
> From: Daniel Kulp [mailto:dkulp@apache.org]
> Sent: Monday, November 03, 2008 1:10 PM
> To: users@cxf.apache.org
> Cc: Ostermueller, Erik
> Subject: Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?
>
> On Friday 31 October 2008 12:02:51 pm Ostermueller, Erik wrote:
> > Hi, I'm still looking for feedback on this in case someone has got a
> > minute.
> > --Erik
>
> No, this can be accomplished in just the normal cxf-servlet.xml.      If
> you
> use jaxws:endpoint element in your beans to publish it, you can add:
>
>     <jaxws:serviceFactory>
>         <bean
> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>                 <property name="serviceConfigurations">
>                         <list>
>                                 <bean
> class="com.your.ServiceConfiguration"/>
>
>                                 <bean
> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
>                         </list>
>                 </property>
>         </bean>
>     </jaxws:serviceFactory>
>
>
> Dan
>
> > -----Original Message-----
> > From: Ostermueller, Erik [mailto:Erik.Ostermueller@fnis.com]
> > Sent: Tuesday, October 28, 2008 8:30 AM
> > To: Daniel Kulp; users@cxf.apache.org
> > Subject: RE: [revisiting] jax-ws @WebParam "Required" annotation?
> >
> > With our setup, CXFServlet loads with web.xml.
> > I'm thinking I should subclass CXFServlet and then configure the
> > services (like you showed me below) in that subclass after my
>
> beans.xml
>
> > is loaded.  Does that sound right?
> >
> > -----Original Message-----
> > From: Daniel Kulp [mailto:dkulp@apache.org]
> > Sent: Monday, October 27, 2008 2:21 PM
> > To: users@cxf.apache.org
> > Cc: Ostermueller, Erik
> > Subject: Re: [revisiting] jax-ws @WebParam "Required" annotation?
> >
> >
> > If you use the ServerFactoryBeans (and not just
> > "Endpoint.publish(...)"), you can call:
> >
> > factory.getServiceFactory().getConfigurations()
> > or setConfigurations() to manipulate the list of configurations.  In
> > general, you would do something like:
> >
> > factory.getServiceFactory().getConfigurations().add(0, yourConfig);
> >
> > Dan
> >
> > On Monday 27 October 2008 1:05:22 pm Ostermueller, Erik wrote:
>
> http://www.nabble.com/jax-ws-@WebParam-%22Required%22-annotation--td19
>
> > > 83
> > > 7631.html
> > >
> > > In the above thread, Dan wrote:
> > > >> With 2.1.3, you will be able to write a ServiceConfiguration
>
> object
>
> > > that
> > >
> > > >> can override the getWrapperPartMinOccurs method to return 1
>
> instead
>
> > > of
> > >
> > > >> 0.  You can try the 2.1.3 snapshots if you want to play with
>
> that.
>
> > > I'm doing java-first and would like to take a look at trying this.
> > > How do you associate a custom ServiceConfiguration with the service?
> > > Perhaps you could point me to a particular junit test that does
> >
> > this...
> >
> >
> >
> > --
> > Daniel Kulp
> > dkulp@apache.org
> > http://dankulp.com/blog
> >
> > _____________
> >
> > The information contained in this message is proprietary and/or
> > confidential. If you are not the
> > intended recipient, please: (i) delete the message and all copies;
>
> (ii)
>
> > do not disclose,
> > distribute or use the message in any manner; and (iii) notify the
>
> sender
>
> > immediately. In addition,
> > please be aware that any message addressed to our domain is subject to
> > archiving and review by
> > persons other than the intended recipient. Thank you.
> > _____________
> >
> > _____________
> >
> > The information contained in this message is proprietary and/or
> > confidential. If you are not the intended recipient, please: (i)
>
> delete the
>
> > message and all copies; (ii) do not disclose, distribute or use the
>
> message
>
> > in any manner; and (iii) notify the sender immediately. In addition,
>
> please
>
> > be aware that any message addressed to our domain is subject to
>
> archiving
>
> > and review by persons other than the intended recipient. Thank you.
> > _____________



-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog

RE: FW: [revisiting] jax-ws @WebParam "Required" annotation?

Posted by "Ostermueller, Erik" <Er...@fnis.com>.
Dan wrote:
>> No, this can be accomplished in just the normal cxf-servlet.xml.
If you 
>> use jaxws:endpoint element in your beans to publish it, you can add:
>>    <jaxws:serviceFactory>
>>        <bean
class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
>>                <property name="serviceConfigurations">
>> <snip!>

I'm giving this a try, but I'm getting errors at startup.  Cxf 2.1.3 /
tomcat 5.x / winxp.

Caused by: javax.xml.ws.WebServiceException:
java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed
data found for annotation element public abstract boolean
javax.xml.bind.annotation.XmlElement.required() (Found data of type
class java.lang.String[true])
The full stack trace is below, where the you can the println I added to
the method I'm overriding (just experimenting now).
So, my class is getting loaded but then experiencing problems later.
W/o the <jaxws:serviceFactory>, this is working fine.

I can only find one javax.xml.bind.annotation.XmlElement.  
I've googled for other versions of this file and can't find ones with
varying type -- only ones with and w/o this method.
Here is the one that comes with cxf:
########################################################################
###
F:\temp\xmlElement>javap -classpath jaxb-api-2.1.jar
javax.xml.bind.annotation.XmlElement

Compiled from "XmlElement.java"
public interface javax.xml.bind.annotation.XmlElement extends
java.lang.annotation.Annotation{
    public abstract java.lang.String name();
    public abstract boolean nillable();
    public abstract boolean required();
    public abstract java.lang.String namespace();
    public abstract java.lang.String defaultValue();
    public abstract java.lang.Class type();
}

Here is the class I'm injecting:
########################################################################
###
package com.fnf.dw.soap.util;

import org.apache.cxf.service.factory.DefaultServiceConfiguration;
import org.apache.cxf.service.model.MessagePartInfo;

public class RequiredFieldProcessor extends DefaultServiceConfiguration
{

    public Long getWrapperPartMinOccurs(MessagePartInfo mpi) {
		
		//This worked just fine
	
System.out.println("RequiredFieldProcessor#getWrapperPartMinOccurs [" +
mpi.getName() + "] toString [" + mpi.toString() + "]");
		
		return super.getWrapperPartMaxOccurs(mpi);
    }
}


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:beans="http://www.springframework.org/schema/beans"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xmlns:cxf="http://cxf.apache.org/core"
	xsi:schemaLocation="
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
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" />

	<jaxws:endpoint 
	  id="idCreditLineForceApproval" 
	
implementor="com.fnf.dw.soap.sa.creditLine.CreditLineForceApprovalImpl05
" 
	  address="/ForceApproval" />

	<jaxws:endpoint 
	  id="idCreditLineInquiry" 
	
implementor="com.fnf.dw.soap.sa.creditLine.CreditLineInquiryImpl05" 
	  address="/Inquiry">
	  
    	<jaxws:serviceFactory>
        	<bean
class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
	                <property name="serviceConfigurations">
    	                    <list>
        	                        <bean
class="com.fnf.dw.soap.util.RequiredFieldProcessor"/>
            	                    <bean
class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
                	        </list>
                	</property>
	        </bean>
    	</jaxws:serviceFactory>
	</jaxws:endpoint>

    <bean id="logInbound"
class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
    <bean id="logOutbound"
class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
	
    <cxf:bus>
        <cxf:features>
            <cxf:logging/>
        </cxf:features>
    </cxf:bus> 

</beans> 

More detail on the stdout
########################################################################
#########
RequiredFieldProcessor#getWrapperPartMinOccurs
[{http://creditLine.sa.soap.dw.fnf.com/}UsernameToken] toString
[[MessagePartInfo
name={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken,
ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}UsernameToken]
RequiredFieldProcessor#getWrapperPartMinOccurs
[{http://creditLine.sa.soap.dw.fnf.com/}Request] toString
[[MessagePartInfo name={http://creditLine.sa.soap.dw.fnf.com/}Request,
ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Request]
RequiredFieldProcessor#getWrapperPartMinOccurs
[{http://creditLine.sa.soap.dw.fnf.com/}Response] toString
[[MessagePartInfo name={http://creditLine.sa.soap.dw.fnf.com/}Response,
ConcreteName={http://creditLine.sa.soap.dw.fnf.com/}Response]
2008-11-05 11:53:59,710 : DefaultSingletonBeanRegistry.destroySingletons
: Destroying singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@17f
2ee6: defining beans
[cxf,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apa
che.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.Bus
ExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apach
e.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryMana
ger,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.tr
ansport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apac
he.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.
apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.Serv
erRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf
.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHan
dlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache
.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,or
g.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.bin
ding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFa
ctory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.
transport.servlet.ServletTransportFactory,idCreditLineForceApproval,idCr
editLineInquiry,idCreditLineCancelApproval,idCreditLineApproval,logInbou
nd,logOutbound]; root of factory hierarchy
2008-11-05 11:53:59,742 : ContextLoader.initWebApplicationContext :
Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'idCreditLineInquiry': Invocation of init method failed;
nested exception is javax.xml.ws.WebServiceException:
java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed
data found for annotation element public abstract boolean
javax.xml.bind.annotation.XmlElement.required() (Found data of type
class java.lang.String[true])
Caused by: javax.xml.ws.WebServiceException:
java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed
data found for annotation element public abstract boolean
javax.xml.bind.annotation.XmlElement.required() (Found data of type
class java.lang.String[true])
	at
org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:267)
	at
org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:201)
	at
org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:394)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1242
)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1208)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.createBean(AbstractAutowireCapableBeanFactory.java:427)
	at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObjec
t(AbstractBeanFactory.java:249)
	at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.g
etSingleton(DefaultSingletonBeanRegistry.java:155)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
stractBeanFactory.java:246)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
stractBeanFactory.java:160)
	at
org.springframework.beans.factory.support.DefaultListableBeanFactory.pre
InstantiateSingletons(DefaultListableBeanFactory.java:291)
	at
org.springframework.context.support.AbstractApplicationContext.refresh(A
bstractApplicationContext.java:352)
	at
org.springframework.web.context.ContextLoader.createWebApplicationContex
t(ContextLoader.java:246)
	at
org.springframework.web.context.ContextLoader.initWebApplicationContext(
ContextLoader.java:189)
	at
org.springframework.web.context.ContextLoaderListener.contextInitialized
(ContextLoaderListener.java:49)
	at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.j
ava:3831)
	at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4323
)
	at
org.objectweb.jonas.web.catalina50.JOnASStandardContext.start(JOnASStand
ardContext.java:221)
	at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.ja
va:823)
	at
org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:121
)
	at
org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerB
ase.java:143)
	at java.security.AccessController.doPrivileged(Native Method)
	at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805)
	at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
	at
org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doRe
gisterWar(CatalinaJWebContainerServiceImpl.java:567)
	at
org.objectweb.jonas.web.AbsJWebContainerServiceImpl.registerWar(AbsJWebC
ontainerServiceImpl.java:802)
	at
org.objectweb.jonas.web.AbsJWebContainerServiceImpl.doStart(AbsJWebConta
inerServiceImpl.java:368)
	at
org.objectweb.jonas.web.catalina50.CatalinaJWebContainerServiceImpl.doSt
art(CatalinaJWebContainerServiceImpl.java:303)
	at
org.objectweb.jonas.service.AbsServiceImpl.start(AbsServiceImpl.java:80)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.invo
ke(CatalinaJWebContainerServiceWrapper.java:156)
	at
org.objectweb.jonas.web.wrapper.CatalinaJWebContainerServiceWrapper.star
t(CatalinaJWebContainerServiceWrapper.java:527)
	at
org.objectweb.jonas.service.ServiceManager.startServices(ServiceManager.
java:313)
	at org.objectweb.jonas.server.Server.start(Server.java:555)
	at org.objectweb.jonas.server.Server.main(Server.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.objectweb.jonas.server.Bootstrap.main(Bootstrap.java:97)
Caused by: java.lang.annotation.AnnotationTypeMismatchException:
Incorrectly typed data found for annotation element public abstract
boolean javax.xml.bind.annotation.XmlElement.required() (Found data of
type class java.lang.String[true])
	at
sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy.generateExce
ption(AnnotationTypeMismatchExceptionProxy.java:38)
	at
sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvo
cationHandler.java:56)
	at $Proxy31.required(Unknown Source)
	at
com.sun.xml.bind.v2.model.annotation.XmlElementQuick.required(XmlElement
Quick.java:48)
	at
com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl.getTypes(ElementP
ropertyInfoImpl.java:139)
	at
com.sun.xml.bind.v2.model.impl.RuntimeElementPropertyInfoImpl.getTypes(R
untimeElementPropertyInfoImpl.java:86)
	at
com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.size(ElementPro
pertyInfoImpl.java:78)
	at java.util.AbstractList$Itr.hasNext(AbstractList.java:416)
	at
com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
va:255)
	at
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
odelBuilder.java:98)
	at
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
odelBuilder.java:79)
	at
com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.ja
va:209)
	at
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
odelBuilder.java:93)
	at
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeM
odelBuilder.java:79)
	at
com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
a:315)
	at
com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.jav
a:330)
	at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextIm
pl.java:432)
	at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:
286)
	at
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139
)
	at
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117
)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at
javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:214)
	at javax.xml.bind.ContextFinder.find(ContextFinder.java:375)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
	at
org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBData
Binding.java:532)
	at
org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:282)
	at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildService
FromClass(ReflectionServiceFactoryBean.java:359)
	at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromCla
ss(JaxWsServiceFactoryBean.java:519)
	at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeSe
rviceModel(ReflectionServiceFactoryBean.java:410)
	at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(Refle
ctionServiceFactoryBean.java:189)
	at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsService
FactoryBean.java:164)
	at
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(
AbstractWSDLBasedEndpointFactory.java:100)
	at
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:
117)
	at
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBea
n.java:168)
	at
org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:336)
	at
org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:251)
	... 47 more
2008-11-05 11:53:59,789 : StandardContext.start : Error listenerStart
2008-11-05 11:53:59,789 : StandardContext.start : Context startup failed
due to previous errors
########################################################################
#########

Thanks,
--Erik

-----Original Message-----
From: Daniel Kulp [mailto:dkulp@apache.org] 
Sent: Monday, November 03, 2008 1:10 PM
To: users@cxf.apache.org
Cc: Ostermueller, Erik
Subject: Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?

On Friday 31 October 2008 12:02:51 pm Ostermueller, Erik wrote:
> Hi, I'm still looking for feedback on this in case someone has got a 
> minute.
> --Erik

No, this can be accomplished in just the normal cxf-servlet.xml.      If
you 
use jaxws:endpoint element in your beans to publish it, you can add:

    <jaxws:serviceFactory>
        <bean
class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
                <property name="serviceConfigurations">
                        <list>
                                <bean
class="com.your.ServiceConfiguration"/>

                                <bean
class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
                        </list>
                </property>
        </bean>
    </jaxws:serviceFactory>


Dan


>
> -----Original Message-----
> From: Ostermueller, Erik [mailto:Erik.Ostermueller@fnis.com]
> Sent: Tuesday, October 28, 2008 8:30 AM
> To: Daniel Kulp; users@cxf.apache.org
> Subject: RE: [revisiting] jax-ws @WebParam "Required" annotation?
>
> With our setup, CXFServlet loads with web.xml.
> I'm thinking I should subclass CXFServlet and then configure the
> services (like you showed me below) in that subclass after my
beans.xml
> is loaded.  Does that sound right?
>
> -----Original Message-----
> From: Daniel Kulp [mailto:dkulp@apache.org]
> Sent: Monday, October 27, 2008 2:21 PM
> To: users@cxf.apache.org
> Cc: Ostermueller, Erik
> Subject: Re: [revisiting] jax-ws @WebParam "Required" annotation?
>
>
> If you use the ServerFactoryBeans (and not just
> "Endpoint.publish(...)"), you can call:
>
> factory.getServiceFactory().getConfigurations()
> or setConfigurations() to manipulate the list of configurations.  In
> general, you would do something like:
>
> factory.getServiceFactory().getConfigurations().add(0, yourConfig);
>
> Dan
>
> On Monday 27 October 2008 1:05:22 pm Ostermueller, Erik wrote:
> >
http://www.nabble.com/jax-ws-@WebParam-%22Required%22-annotation--td19
> > 83
> > 7631.html
> >
> > In the above thread, Dan wrote:
> > >> With 2.1.3, you will be able to write a ServiceConfiguration
object
> >
> > that
> >
> > >> can override the getWrapperPartMinOccurs method to return 1
instead
> >
> > of
> >
> > >> 0.  You can try the 2.1.3 snapshots if you want to play with
that.
> >
> > I'm doing java-first and would like to take a look at trying this.
> > How do you associate a custom ServiceConfiguration with the service?
> > Perhaps you could point me to a particular junit test that does
>
> this...
>
>
>
> --
> Daniel Kulp
> dkulp@apache.org
> http://dankulp.com/blog
>
> _____________
>
> The information contained in this message is proprietary and/or
> confidential. If you are not the
> intended recipient, please: (i) delete the message and all copies;
(ii)
> do not disclose,
> distribute or use the message in any manner; and (iii) notify the
sender
> immediately. In addition,
> please be aware that any message addressed to our domain is subject to
> archiving and review by
> persons other than the intended recipient. Thank you.
> _____________
>
> _____________
>
> The information contained in this message is proprietary and/or
> confidential. If you are not the intended recipient, please: (i)
delete the
> message and all copies; (ii) do not disclose, distribute or use the
message
> in any manner; and (iii) notify the sender immediately. In addition,
please
> be aware that any message addressed to our domain is subject to
archiving
> and review by persons other than the intended recipient. Thank you.
> _____________



-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog

_____________

The information contained in this message is proprietary and/or confidential. If you are not the 
intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, 
distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, 
please be aware that any message addressed to our domain is subject to archiving and review by 
persons other than the intended recipient. Thank you.
_____________

RE: FW: [revisiting] jax-ws @WebParam "Required" annotation?

Posted by "Ostermueller, Erik" <Er...@fnis.com>.
Yep, I use jaxws:endpoint.  I'll give that a try, thanks for following
up.
--Erik 

-----Original Message-----
From: Daniel Kulp [mailto:dkulp@apache.org] 
Sent: Monday, November 03, 2008 1:10 PM
To: users@cxf.apache.org
Cc: Ostermueller, Erik
Subject: Re: FW: [revisiting] jax-ws @WebParam "Required" annotation?

On Friday 31 October 2008 12:02:51 pm Ostermueller, Erik wrote:
> Hi, I'm still looking for feedback on this in case someone has got a 
> minute.
> --Erik

No, this can be accomplished in just the normal cxf-servlet.xml.      If
you 
use jaxws:endpoint element in your beans to publish it, you can add:

    <jaxws:serviceFactory>
        <bean
class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
                <property name="serviceConfigurations">
                        <list>
                                <bean
class="com.your.ServiceConfiguration"/>

                                <bean
class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/>
                        </list>
                </property>
        </bean>
    </jaxws:serviceFactory>


Dan


>
> -----Original Message-----
> From: Ostermueller, Erik [mailto:Erik.Ostermueller@fnis.com]
> Sent: Tuesday, October 28, 2008 8:30 AM
> To: Daniel Kulp; users@cxf.apache.org
> Subject: RE: [revisiting] jax-ws @WebParam "Required" annotation?
>
> With our setup, CXFServlet loads with web.xml.
> I'm thinking I should subclass CXFServlet and then configure the
> services (like you showed me below) in that subclass after my
beans.xml
> is loaded.  Does that sound right?
>
> -----Original Message-----
> From: Daniel Kulp [mailto:dkulp@apache.org]
> Sent: Monday, October 27, 2008 2:21 PM
> To: users@cxf.apache.org
> Cc: Ostermueller, Erik
> Subject: Re: [revisiting] jax-ws @WebParam "Required" annotation?
>
>
> If you use the ServerFactoryBeans (and not just
> "Endpoint.publish(...)"), you can call:
>
> factory.getServiceFactory().getConfigurations()
> or setConfigurations() to manipulate the list of configurations.  In
> general, you would do something like:
>
> factory.getServiceFactory().getConfigurations().add(0, yourConfig);
>
> Dan
>
> On Monday 27 October 2008 1:05:22 pm Ostermueller, Erik wrote:
> >
http://www.nabble.com/jax-ws-@WebParam-%22Required%22-annotation--td19
> > 83
> > 7631.html
> >
> > In the above thread, Dan wrote:
> > >> With 2.1.3, you will be able to write a ServiceConfiguration
object
> >
> > that
> >
> > >> can override the getWrapperPartMinOccurs method to return 1
instead
> >
> > of
> >
> > >> 0.  You can try the 2.1.3 snapshots if you want to play with
that.
> >
> > I'm doing java-first and would like to take a look at trying this.
> > How do you associate a custom ServiceConfiguration with the service?
> > Perhaps you could point me to a particular junit test that does
>
> this...
>
>
>
> --
> Daniel Kulp
> dkulp@apache.org
> http://dankulp.com/blog
>
> _____________
>
> The information contained in this message is proprietary and/or
> confidential. If you are not the
> intended recipient, please: (i) delete the message and all copies;
(ii)
> do not disclose,
> distribute or use the message in any manner; and (iii) notify the
sender
> immediately. In addition,
> please be aware that any message addressed to our domain is subject to
> archiving and review by
> persons other than the intended recipient. Thank you.
> _____________
>
> _____________
>
> The information contained in this message is proprietary and/or
> confidential. If you are not the intended recipient, please: (i)
delete the
> message and all copies; (ii) do not disclose, distribute or use the
message
> in any manner; and (iii) notify the sender immediately. In addition,
please
> be aware that any message addressed to our domain is subject to
archiving
> and review by persons other than the intended recipient. Thank you.
> _____________



-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog

_____________

The information contained in this message is proprietary and/or confidential. If you are not the 
intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, 
distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, 
please be aware that any message addressed to our domain is subject to archiving and review by 
persons other than the intended recipient. Thank you.
_____________