IBM Support

WAS_V61_WEBSERVICES_THINCLIENT jar and ibm-jaxrpc-client.jar for WebSphere Application Server v6.0

Question & Answer


Question

When generating a JAX-RPC web services client targeting a Java project using IBM Rational Application Developer v7.0, why is the project build path modified to include the class path variable WAS_V61_WEBSERVICES_THINCLIENT ( = {Install dir}\SDP70\runtimes\base_v61\runtimes\ com.ibm.ws.webservices.thinclient_6.1.0.jar ), even though WebSphere Application Server v6.0 was selected as the target server type?

Cause

Steps to reproduce in Rational Application Developer v7.0:

  1. Create a stand-alone Java project. Configure it to use the WebSphere Application Server v6.0 Java Runtime Environment (JRE):
    File > New Project : Java Project

  2. From any Web service WSDL, generate a client:

    Right click on WSDL > Webservices > Generate Client
    * Server: WebSphere 6.0 Server
    * Web service runtime: IBM WebSphere JAX-RPC
    * Client project: .... (Java stand-alone project)


    Be sure to choose WebSphere Application Server v6.0 as the Server and IBM WebSphere JAX-RPC as the Web service runtime: , and select the Java project as the Client project.

  3. Continue through the wizards accepting the defaults or just press Finish.
    The result is that the build path of the Java project will be modified to include the WAS_V61_WEBSERVICES_THINCLIENT variable.

  4. When attempting to launch the stand-alone application using the Run Launcher, this error is received:

    Exception in thread "main" java.lang.UnsupportedClassVersionError:
    javax/wsdl/factory/WSDLFactory (Unsupported major.minor version 49.0)

Answer


The WAS_V61_WEBSERVICES_THINCLIENT jar was compiled with IBM JDK v5 so the version mismatch will occur when IBM JDK 1.4 compiled code tries to use it.

If the user is strictly using WebSphere Application Server v6.0.2.x JDK 1.4 then they will likely run into this problem in different situations. In some case a WebSphere Application Server v6.0 JDK 1.4 compiled client could get away with the "WAS_V61_WEBSERVICES_THINCLIENT jar. It depends on the code path that results in accessing a class inside the WebSphere Application Server v6.1 thin client jar. Changing to ibm-jaxrpc-client.jar, which will be explained, should avoid the issue.

The basic "inappropriate variable for WebSphere Application Server v6.0" problem is resolved in Rational Application Developer v7.5, via Feature Request (RFE) RATLC00309783: "Required support for ..\base_v6\runtimes\ibm-jaxrpc-client.jar". This will not be backported to Rational Application Developer v7.0, as will be explained

In Rational Application Developer v7.0 the workaround is to delete the variable WAS_V61_WEBSERVICES_THINCLIENT from the build path and in its place add a link to the WebSphere Application Server v6.0 thin client jar : ..\base_v6\runtimes\ibm-jaxrpc-client.jar. The user must configure this themselves for WebSphere Application Server v6.0 due to licensing restrictions. The Rational Application Developer v7.0 original installations of WebSphere Application Server v6.0 (UTE or stand-alone) will NOT have this jar. Users may be able to locate this file under any local WebSphere Application Server v6.0 installation under the runtimes subdirectory, with a minimum level of WebSphere Application Server v6.0.2.0 .

The change, as exhibited in the RFE, required User Interface (UI) changes ,restricting any backport of this into any Rational Application Developer v7.0.0.x update. The UI changes were necessary to help capture user input as to where the ibm-jaxrpc-client.jar was located. This is because of WebSphere Application Server licensing terms, as Rational Application Developer is not allowed to redistribute this file. Users would have to upgrade WebSphere Application Server v6.0 to 6.0.2.0+ . So, any solution would require prompting a user for where this jar is located. Given that WebSphere Application Server licensing terms do not allow redistributing this file, Rational Application Developer v7.0 went with the WebSphere Application Server v6.1 jar: WAS_V61_WEBSERVICES_THINCLIENT variable, for a WebSphere Application Server v6.0 solution in Rational Application Developer v7.0,

The problem in Rational Application Developer v7.0 not a serious, as long as you use the appropriate IBM JDK version which ships with Rational Application Developer v7.0 together with the web services thin client jar n the build path, as appropriate for the WebSphere Application Server v6.x version. Specifically:

  • For a WebSphere Application Server v6.1 Java Thin client (not Utility project) with WAS_V61_WEBSERVICES_THINCLIENT, click on the class with the main method and select Run As => Java Application. The launch configuration should have WebSphere Application Server v6.1 JDK 5.0 or Rational Application Developer v7.0 IBM JDK 5.0 as the JRE.
  • For a WebSphere Application Server 6.0.2.x Java Thin client (not Utility project) with ibm-jaxrpc-client.jar, use WebSphere Application Server v6.0's IBM JDK v1.4.2.x JRE instead.




Background-Summary on ibm-jaxrpc-client.jar :

ibm-jaxrpc-client.jar is NOT shipped in Rational Application Developer v7.0. When Rational Application Developer v7.0 is first installed, the folder: ..\SDP70\runtimes\base_v6\runtimes\ will be empty.WebSphere does ship it in WebSphere Application Server v6.0.2.x updates, which a Rational Application Developer v7.0 user can apply. This is not publicized or directly supported by WebSphere..

The licensing restriction on this file is quite rigorous, which is why Rational Application Developer v7.0 ended up providing just a WAS_V61_WEBSERVICES_THINCLIENT variable , corresponding to the acceptable: ../base_v61/runtimes/com.ibm.ws.webservices.thinclient_6.1.0.jar

The WebSphere Application Server v6.0 server is very strict about ibm-jaxrpc-client.jar. Customers must typically have a DOU (document of understanding) with the WebSphere Application Server Web Services L3 team to get support. Also, if a user runs into a problem, they must reproduce it on WebSphere Application Server. (i.e the client could be talking to a .NET server but the problem must still be reproduced in a WebSphere to WebSphere communications configuration).No other details are available or will be provided here. Contact WebSphere server support if needed.



Workaround:
  1. Update to WebSphere Application Server 6.0.2.x, to get E:\IBM\SDP70\runtimes\base_v6\runtimes\ibm-jaxrpc-client.jar
  2. Remove WAS_V61_WEBSERVICES_THINCLIENT from the build path.
  3. Add a new variable or link the ibm-jaxrpc-client.jar location, in place of WAS_V61_WEBSERVICES_THINCLIENT. This enables the existing variable to be preserved for any WebSphere Application Server v6.1 thin clients or cases where an IBM JDK 5 can be used.


Runtime usage issue - Error:

Having the ibm-jaxrpc-client.jar or WAS_V61_WEBSERVICES_THINCLIENT on the build classpath of a Web Services Thin Java client project, results in runtime errors if the WebSphere Application Server v6.x Runtime is present in addition to the WebSphere Application Server v6.x Java Runtime (JRE) System library.

For any normal Thin Java Client project (i.e. not a J2EE Java utility project) for WebSphere Application Server v6.x, the WebSphere Application Server v6.x Runtime library would NOT normally be part of the Java Build Path (hence the Run Launcher classpath) when using ibm-jaxrpc-client.jar (for WebSphere Application Server v6.0) or WAS_V61_WEBSERVICES_THINCLIENT (for WebSphere Application Server v6.1).

If the WebSphere Application Server v6.x Runtime is added to the build path, remove it. Similarly in the Run Launcher classpath. Naturally, the WebSphere Application Server v6.x JRE should be part of the build path. In the case of a J2EE Java Utility project associated with an EAR targeted to some WebSphere Application Server v6.x server runtime, the WebSphere Application Server v6.x runtime is added to the build path. Remove the WebSphere Application Server v6.x server runtime library if any runtime problems. such as the following warning and error occurs when using the web services thin client jar(s):

Aug 18, 2008 12:26:42 PM com.ibm.ws.util.ImplFactory
WARNING: WSVR0072W
Exception in thread "main" java.lang.NoClassDefFoundError:
com.ibm.ws.objectpool.naming.ObjectPoolManagerFactory


, as well as numerous:
Aug 15, 2008 2:05:48 PM com.ibm.ws.util.ImplFactory
WARNING: WSVR0072W,



Conclusion:

This WILL NOT be fixed in Rational Application Developer 7.0 since UI changes are necessary to help capture user input as to where the ibm-jaxrpc-client.jar is located. This is required because Rational Application Developer v7 is not allowed to ship that file. Users have to upgrade WebSphere Application Server to 6.0.2.x or download this jar from the Web.

Rational Application Developer v7.5:


In the case of Rational Application Developer v7.5 and ibm-jaxrpc-client.jar, the WebSphere Application Server licensing terms are the same but the WebSphere v6 test environment is newer so the file is there but not in the stub server runtimes directory:
{RAD Install Dir}\runtimes\base_v{nn}_stub\runtimes\*.jar.
Rational Application Developer 7.5 provides the user with a Web Services WebSphere JAX-RPC client workspace Preference where they can set up the variable:

Window > Preferences > Web Services > WebSphere > JAX-RPC Code Generation
> "Tab": V6 Thin Client : [ ] Use WebSphere V6 thin client

After selecting the above checkbox, the user can manually locate ("Browse") the ibm-jaxrpc-client.jar file. There is also a "Detect" button that basically looks at the WebSphere Application Server v6.0 runtimes that have been installed/configured on the system and tries to find the WebSphere JAX_RPC Web Services client.jar. If its is detected , it will be auto-configured. The user can still change it if they want.

When a JAX-RPC Web Services Java Thin Client is generated for WebSphere Application Server v6.x or v7.x in Rational Application Developer v7.5 to a plain Java project, there are now separate server version based Library/Jar Classpath Variables associated with the project and its Java Build Path. For example, showing sample detected server client jars for v6.0.2.x, v6.1 and v7.0:

  • WAS_V6_WEBSERVICES_THINCLIENT :
    {RAD v7.5 Install Dir}\SDP\runtimes\base_v6\runtimes\
    ibm-jaxrpc-client.jar
  • WAS_V61_WEBSERVICES_THINCLIENT:
    {RAD v7.5 Install Dir}\SDP\runtimes\base_v61\runtimes\
    com.ibm.ws.webservices.thinclient_6.1.0.jar
  • WAS_V7_WEBSERVICES_THINCLIENT:
    {RAD v7.5 Install Dir}\SDP\runtimes\base_v7\runtimes\
    com.ibm.ws.webservices.thinclient_7.0.0.jar

For a JAX-WS Web Services Java Thin Client is generated for WebSphere Application Server v6.1 Web Services Feature Pack (FP) and v7.0 in Rational Application Developer v7.5 the thin client Classpath Variables are:
  • WAS_V61FP_WEBSERVICES_THINCLIENT:
    {RAD v7.5 Install Dir}\SDP\runtimes\base_v61\runtimes\com.ibm.jaxws.thinclient_6.1.0.jar
  • WAS_V7JAXWS_WEBSERVICES_THINCLIENT:
    {RAD v7.5 Install Dir}\SDP\runtimes\base_v7\runtimes\com.ibm.jaxws.thinclient_7.0.0.jar

WebSphere Web Services Java Thin Client projects, are plain Java projects into which you can generate the client code by Right Click on a WSDL :
> Web Services > Generate Java Client
and select the appropriate WebSphere Application Server version and Web Service Runtime.
Prerequisite to generating the client:
  1. The project JRE "must" be set to the WebSphere Application Server version JRE (e.g. v6.0) In turn that will set the project Java Compliance to match the server JRE edition (e.g 1.4 for v6.0).
    If this was a J2EE/EE Utility Project or EE Application Client the project Java Facet (e.g. 1.4 for v6.0) would also be set.
    In the Enterprise Explorer view , a generated JAX-RPC WebSphere Application Server thin client Java project should look like:




    The WAS_V6_WEBSERVICES_THINCLIENT classpath variable will also appear under the project
    Java Build Path : Libraries [Tab]
  2. If this is a v6.0 server web services thin java client project, the workspace preference should be checked and set to Detect or Browse for a ibm-jaxrpc-client.jar, as per this example:

    Window > Preferences > Web Services > WebSphere > JAX-RPC Code generation >
    V6 Thin Client [Tab] :
    [x] Use WebSphere Thin Client
    Path: {RAD7 Install Dir}\SDP70\runtimes\base_v6\runtimes\ibm-jaxrpc-client.jar

Contact IBM Support for Rational Application Developer if further assistance is needed.

[{"Product":{"code":"SSRTLW","label":"Rational Application Developer for WebSphere Software"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Web Services Development","Platform":[{"code":"PF033","label":"Windows"},{"code":"PF016","label":"Linux"}],"Version":"7.0;7.0.0.1;7.0.0.2;7.0.0.3;7.0.0.4;7.0.0.5;7.0.0.6;7.0.0.7;7.0.0.8;7.0.0.9;7.5;7.5.1;7.5.2;7.5.3","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
16 June 2018

UID

swg21316678