cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dennis Sosnoski <...@sosnoski.com>
Subject Re: Usage of WS-RM 1.1 in the client configuration
Date Tue, 29 Jan 2013 18:38:32 GMT
Hi John,

I did most of the work required for WS-RMP support last year, when I 
opened https://issues.apache.org/jira/browse/CXF-4139. But I got 
distracted by other projects, and my work-in-progress was outdated by 
other changes. It's coming up on the one year anniversary, so probably 
time to give this another try. I'll look into putting the pieces back 
together next week.

Regards,

   - Dennis


On 01/22/2013 09:24 PM, John Li wrote:
> Hello Aki,
>
> Thanks for your help. The settings work as expected.
> I wil contact Dennis about the latest status on this issue and pointers to
> where I could possibly start with contributing to this. Meanwhile I setup
> the environment and get all the unit tests up and running so I can start
> directly when I have some more information.
>
> With kind regards,
> John
>
>
> On Fri, Jan 18, 2013 at 11:00 AM, Aki Yoshida<elakito@gmail.com>  wrote:
>
>> Hi John,
>> if you are using the sample Client from samples/ws_rm, you can set the
>> protocol as
>>
>> import org.apache.cxf.endpoint.Client;
>> import org.apache.cxf.frontend.ClientProxy;
>> ...
>>          Client client = ClientProxy.getClient(port);
>>          client.getRequestContext().put(RMManager.WSRM_VERSION_PROPERTY,
>> RM11Constants.NAMESPACE_URI);
>>          client.getRequestContext().put(RMManager.WSRM_WSA_VERSION_PROPERTY,
>> Names.WSA_NAMESPACE_NAME);
>>
>> Regarding CXF-4139, as RMP 1.1 assertions are instantiated but
>> currently not used, as CXF's WS-RM uses 1.0 assertions internally to
>> read the configuration values like retransmission time etc. I added
>> some additional configuration properties in the manager schema
>> sometime ago to expose the options that are not defined in neither
>> policy versions or not in 1.1. Dennis mentioned me of this policy
>> unification ticket at that time. You can ping him and ask him if he
>> has some update. If you can look into it and contribute, that sounds
>> great.
>>
>> thanks.
>> regards, aki
>>
>> 2013/1/17 John Li<john@mycubes.nl>:
>>> Hello Aki
>>>
>>> Thanks for your quick response!
>>> I am looking into your suggestion and I wanted to try this approach
>> before
>>> I set set the bean property through Spring. But I saw in the
>>> org.apache.cxf.ws.rm.Proxy file that the client is always instanciated in
>>> the 'invoke' method. So I am not sure how I can change this runtime
>> setting
>>> without overriding the createClient method in the Proxy class. But I
>>> figured that shouldn't be the way to go so I went for the property
>>> configuration solution. Can you maybe point me to the place where I can
>>> access the client in the correct way? Thanks!
>>>
>>> Also having seen issue
>>> CXF-4139<https://issues.apache.org/jira/browse/CXF-4139>  it
>>> looks like this task has been defined for quite a while. Is there already
>>> some activity on this? Since I will be working on wsrm for a couple of
>>> months (at least), maybe I can help/contribute with anything on this
>> part?
>>> Many thanks in advance!
>>>
>>> With kind regards,
>>> John
>>>
>>>
>>>
>>>
>>> On Thu, Jan 17, 2013 at 3:52 PM, Aki Yoshida<elakito@gmail.com>  wrote:
>>>
>>>> Hi John,
>>>> That generic property setting option was marked deprecated many years
>>>> go, so it's not good to use it. The explicit WSA namespace setting in
>>>> the bean configuration was added when WS-RM 1.1 was added. But I think
>>>> it is confusing to set these namespace properties in the RM
>>>> feature/manager level, as the server side endpoint can accept both
>>>> versions. Maybe that is why Dennis who worked on RM1.1 implementation
>>>> didn't add the RM namespace setting property to the bean
>>>> configuration.
>>>>
>>>> So how can you tell the client which WSRM version to use? You can
>>>> switch it by setting the appropriate runtime context properties. For
>>>> example, to use the standard WSRM11 and WSA combination, you can
>>>> write:
>>>>
>>>>          client.getRequestContext().put(RMManager.WSRM_VERSION_PROPERTY,
>>>> RM11Constants.NAMESPACE_URI);
>>>>
>> client.getRequestContext().put(RMManager.WSRM_WSA_VERSION_PROPERTY,
>>>> Names.WSA_NAMESPACE_NAME);
>>>>
>>>> For the server side, both versions 1.0 and 1.1 are automatically
>>>> accepted. So you don't need to configure anything special.
>>>>
>>>> regards, aki
>>>>
>>>> 2013/1/17 John Li<john@mycubes.nl>:
>>>>> Hello all,
>>>>>
>>>>> I am currently working on an assignment to implement a pilot showing
>> the
>>>>> interoperability of WSRM between different technologies. For the
>>>> reference
>>>>> implementation I will be using Apache CXF to provide both a server for
>>>>> other clients to connect to and to provide a sample client
>> implementation
>>>>> in Apache CXF.
>>>>>
>>>>> After downloading and getting the wsrm sample application up and
>> running
>>>> I
>>>>> have seen in the SOAP messages that WSRM 1.0 is the default protocol
>>>> since
>>>>> the namespace is still 'http://schemas.xmlsoap.org/ws/2005/02/rm'.
>>>>>
>>>>> Actually the CXF website is not mentioning anything about the
>>>>> implementation of wsrm 1.1. After some research I found that from
>> version
>>>>> 2.5.1 the wsrm 1.1/1.2 has been added to the release. My problem is
>> that
>>>> I
>>>>> could not find how to activate the 1.1 protocol. Specifically I need
>> the
>>>>> RMS to send out wsrm 1.1 messages out instead of 1.0 messages. The
>> RMD I
>>>>> can see it will react based on the message that comes in so that will
>>>>> automatically select the right protocol version.
>>>>>
>>>>> After looking through the source code of the WSRM implementation I
>> found
>>>>> the required settings in the RMManager but based on the
>>>>> current reliableMessaging configurations the rmNamespace is not a
>>>>> configuration option. Although I can see in the wsrm-manager.xsd the
>>>>> following statement:
>>>>>
>>>>> <xs:any namespace="http://www.springframework.org/schema/beans"
>>>>> processContents="lax" minOccurs="0" maxOccurs="unbounded">
>>>>> <xs:annotation><xs:documentation>
>>>>> Deprecated.  To support the older spring:property element that is no
>>>> longer
>>>>> used
>>>>> </xs:documentation></xs:annotation>
>>>>> </xs:any>
>>>>>
>>>>> I could only change this configuration by using the spring property
>>>>> element. So to make my client implementation sending out wsrm 1.1
>>>> messages,
>>>>> I have used the following two statements in the reliableMessaging
>>>>> configuration:
>>>>>
>>>>> <wsrm-mgr:RM10AddressingNamespace uri="
>>>> http://www.w3.org/2005/08/addressing"
>>>>> />
>>>>> <property name="RMNamespace" value="
>>>>> http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
>>>>>
>>>>> Though now it seems to work, the property element is deprecated so I
>> am
>>>>> wondering if I am doing it on the correct way or is there a better
>> way to
>>>>> do this?
>>>>>
>>>>> Also I see in the current implementation that the usage of wsrmp 1.0
>>>>> settings is defined in the wsrm-manager.xsd and wsrmp 1.1/1.2 elements
>>>> are
>>>>> not supported. As it also is stated in issue
>>>>> https://issues.apache.org/jira/browse/CXF-4139.  Though the wsrmp
>>>> 1.1/1.2
>>>>> has totally different elements, the most important delivery assurance
>>>>> settings are already supported by Apache CXF wsrm-manager
>> configurations.
>>>>> My question on this is: What is the impact for Apache CXF when a WSDL
>> is
>>>>> provided that uses the wsrmp 1.1/1.2 policy elements? Will they be
>>>> ignored
>>>>> and you need to configure these settings manually through the manager
>> or
>>>>> does CXF automatically convert them to the internal manager settings?
>>>>>
>>>>> I hope someone can help me with clarifying my questions.
>>>>>
>>>>> Many thanks in advance!
>>>>>
>>>>> John Li

Mime
View raw message