Hi Colm,

  I'm starting to understand that it's another way to configure the client.

  I've two questions :

   - Is it thread safe ?
   I guess that it is as I see that the ServiceBus specify a Thread.
   In a J2EE context, should I specify something else than
   SpringBusFactory.setThreadDefaultBus(bus); ?


   - I'm a bit puzzled by the configuration:


SpringBusFactory bf = new SpringBusFactory();
URL busFile = UsernameTokenTest.class.getResource("client/client.xml");


This code load a Spring configuration file, while I already have mine + the
client.xml configuration has some cxf:bus definition (is it the same thing
? SringBusFactory & cxf:bus ?).

 So I wonder I can't just use this code in an existing spring context, How
should I transpose this within an existing spring context?


 How I think it would work is :


   - Use your way to setup SpringBus and the Client
   - Have a Spring class X that has the WS Client as dependency
   - X implement each method of the WS(+some additional business logic) and
   set the username dynamically <= I still don't know how to do this...

 Is it the correct way ?

Thomas.

Here is my current work in progress spring file

<beans xmlns="http://www.springframework.org/schema/beans";

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 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-2.0.xsd";>


  <cxf:bus>
    <cxf:features>
       <cxf:logging />
    </cxf:features>
  </cxf:bus>



<!--
/Users/tmanson/Dropbox/crf/AMXBPM-2.1-WS-Client/src/main/resources/de.wsdl
-->
  <jaxws:client
            name="{http://services.brm.n2.tibco.com}EntityResolverService";

wsdlLocation="/Users/tmanson/Dropbox/crf/AMXBPM-2.1-WS-Client/src/main/resources/de.wsdl"
    serviceClass="com.tibco.n2.de.services.EntityResolverService"
         address="http://192.168.2.202:8080/amxbpm/EntityResolverService";
  createdFromAPI="true">
    <jaxws:properties>
      <entry key="ws-security.callback-handler"

 
value="com.mansonthomas.amxbpm.customwebapp.services.amxbpm.security.PasswordCallbackHandler"
/>
    </jaxws:properties>
  </jaxws:client>

</beans>









On Tue, Sep 24, 2013 at 11:41 AM, Colm O hEigeartaigh
<[email protected]>wrote:

> Look at the last test here:
>
>
> http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/ut/UsernameTokenTest.java?view=markup
>
>
> ((BindingProvider)utPort).getRequestContext().put(SecurityConstants.USERNAME,
> "Alice");
>
> Colm.
>
>
> On Tue, Sep 24, 2013 at 10:33 AM, Thomas Manson
> <[email protected]>wrote:
>
> > Hi Colm,
> >
> >   I'm back working on this subject (was on pause as I was working for
> other
> > clients)
> >
> >   I've checked out the SVN repo you gave me, and I've looked through the
> > samples configurations (client.xml) and I can't find anything
> appropriate.
> >
> >  In the UT (Username Token I guess), the username is always provided in
> the
> > configuration file.
> >  The saml/x509 configuration still refers to Alice.properties...
> >
> >
> >   In my case, the username shouldn't appear in the configuration files,
> as
> > I need to use the J2EE Principal as login, and call the webservice to
> > authenticate the user.
> >
> >   Could you point me to the right direction  ?
> >
> > Thomas.
> >
> >
> >
> >
> >
> > On Sat, Jul 13, 2013 at 1:45 AM, Thomas Manson
> > <[email protected]>wrote:
> >
> > > Thanks, it will surely help a lot :)
> > >
> > > Thomas.
> > >
> > >
> > > On Fri, Jul 12, 2013 at 6:05 PM, Colm O hEigeartaigh <
> > [email protected]>wrote:
> > >
> > >> Please take a look at the tests here:
> > >>
> > >>
> > >>
> >
> http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/ws-security-examples/
> > >>
> > >> Colm.
> > >>
> > >>
> > >> On Fri, Jul 12, 2013 at 4:22 PM, Thomas Manson
> > >> <[email protected]>wrote:
> > >>
> > >> > Do you have any other pointer that this page :
> > >> >
> > >> > cxf.apache.org/docs/ws-securitypolicy.html
> > >> >
> > >> > it's way to short for me as documentation to build something that
> > work.
> > >> > When I read the properties described, I feel there's a mix between
> > >> server
> > >> > side properties (which I'm not interested as I'm just implementing a
> > >> > client)... + it starts with extra properties... where are the basic
> > >> ones?
> > >> >
> > >> > what would help is a full example of the code of a client.
> > >> >
> > >> > I'm quite lost ;)
> > >> >
> > >> >
> > >> >
> > >> >
> > >> > On Fri, Jul 12, 2013 at 5:09 PM, Colm O hEigeartaigh <
> > >> [email protected]
> > >> > >wrote:
> > >> >
> > >> > >
> > >> > > If you follow the WS-SecurityPolicy approach then it will work, as
> > >> all of
> > >> > > the configuration is taken from the context rather than a
> properties
> > >> Map.
> > >> > >
> > >> > > Colm.
> > >> > >
> > >> > >
> > >> > > On Fri, Jul 12, 2013 at 4:01 PM, Thomas Manson <
> > >> > [email protected]
> > >> > > > wrote:
> > >> > >
> > >> > >>  I already does what you say as follow, but it mean one instance
> of
> > >> the
> > >> > >> client per user connected.
> > >> > >>
> > >> > >>
> > >> > >> I've search quite some time dans didn't find a way to set
> something
> > >> like
> > >> > >> the password callback handler.
> > >> > >>
> > >> > >>
> > >> > >>
> > >> > >>  JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
> > >> > >>
> > >> > >>     factory.setServiceClass(WorkListService.class);
> > >> > >>
> > >> > >>     factory.setAddress(this.endpoint);
> > >> > >>
> > >> > >>     //
> > >> > >>
> > >> >
> > >>
> >
> factory.setWsdlLocation("D:/ARTIC/SOURCE/artic/trunk/webapp/src/main/webapp/WSDL/brm.wsdl");
> > >> > >>
> > >> > >>     factory.setServiceName(new QName("
> > >> http://services.brm.n2.tibco.com
> > >> > ",
> > >> > >> "WorkListService"));
> > >> > >>
> > >> > >>     WorkListService workListService = (WorkListService)
> > >> > factory.create();
> > >> > >>
> > >> > >>
> > >> > >>        Client client = ClientProxy.getClient(workListService);
> > >> > >>
> > >> > >>
> > >> > >>     Map<String, Object> properties = new HashMap<String,
> Object>();
> > >> > >>
> > >> > >>     properties.put(WSHandlerConstants.ACTION          ,
> > >> > >> WSHandlerConstants.USERNAME_TOKEN);
> > >> > >>
> > >> > >>     properties.put(WSHandlerConstants.USER            ,
> > >> this.username);
> > >> > >>
> > >> > >>     properties.put(WSHandlerConstants.PASSWORD_TYPE   ,
> > WSConstants.
> > >> > >> PW_TEXT);// "PasswordDigest"
> > >> > >>
> > >> > >>     properties.put(WSHandlerConstants.PW_CALLBACK_REF ,
> > >> > newPasswordCallbackHandler(
> > >> > >> this.username, password, "password"));
> > >> > >>
> > >> > >>
> > >> > >>     client.getOutInterceptors().add(new
> > >> > WSS4JOutInterceptor(properties));
> > >> > >>
> > >> > >>
> > >> > >> On Fri, Jul 12, 2013 at 4:36 PM, Colm O hEigeartaigh <
> > >> > [email protected]
> > >> > >> > wrote:
> > >> > >>
> > >> > >>> ou could create a CXF interceptor that sets the username on the
> > fly,
> > >> > >>> before the WSS4JOutInterceptor is called.
> > >> > >>
> > >> > >>
> > >> > >>
> > >> > >>
> > >> > >
> > >> > >
> > >> > > --
> > >> > > Colm O hEigeartaigh
> > >> > >
> > >> > > Talend Community Coder
> > >> > > http://coders.talend.com
> > >> > >
> > >> >
> > >>
> > >>
> > >>
> > >> --
> > >> Colm O hEigeartaigh
> > >>
> > >> Talend Community Coder
> > >> http://coders.talend.com
> > >>
> > >
> > >
> >
>
>
>
> --
> Colm O hEigeartaigh
>
> Talend Community Coder
> http://coders.talend.com
>

Reply via email to