¿Cómo consigo las credenciales de inicio de sesión que se pasan al cliente de servicio JAX-WS con sus juegos de políticas y los enlaces en Rational WebSphere herramientas /

StackOverflow https://stackoverflow.com/questions/3782090

Pregunta

Estoy en concreto utilizando WebSphere Integration Developer V7, pero también podría ser a través de Rational Software Architect V 7.5.1 (ya que tengo ambos).

Contexto: Estoy intentando crear un cliente JAX-WS para llamar a los servicios de Human Task Manager y Business Flow Manager en WebSphere Process Server V7, que están expuestas a través de JAX-WS. Por defecto se han unido conjuntos Política, y los enlaces de proveedores que especificar algunos valores de WS-Security (ya que estos no están definidas en el WSDL).

He descubierto la manera de hacer que funcione mediante un proyecto dinámico Web. He sido capaz de generar el código de cliente JAX-WS desde el WSDL. He sido capaz de exportar los conjuntos de políticas y los enlaces de proveedor y cliente de Process Server e importarlos en mi espacio de trabajo. He sido capaz de unir el conjunto de directivas y enlaces de cliente con el servicio al cliente. He sido capaz de crear una página y un servlet para invocar mi servicio web (para probar el cliente). Y he sido capaz de establecer la configuración de seguridad en los descriptores de despliegue de WebSphere y archivos de unión / extensión para conseguir que funcione.

Esto es todo una maravilla, pero en realidad no queremos un oído con una guerra justa para exponer el cliente de servicios web a las otras aplicaciones que escriben. Queremos generar un frasco cliente de servicios web y empaquetarlo con otras aplicaciones.

Teniendo en cuenta esta línea de pensamiento que he sido capaz de averiguar cómo utilizar un proyecto normal de Java en mi IDE y generar el cliente de servicios web en él. También he sido capaz de conectar el set y consolidaciones cliente a cliente.

Mi problema es ahora la forma de invoco esto? He creado un proyecto web dinámico con mi página y servlet como antes para probar mi cliente. He definido mi proyecto de cliente como una dependencia web de la biblioteca por lo que tiene acceso al código de cliente. Incluso puedo configurar los descriptores de despliegue como antes a la fuerza de usuario y authenication. El único problema ahora es que no puedo encontrar la manera de pasar las credenciales a mi servicio web que ahora se encuentra en su propia "tarro". Antes de que tuviera acceso a un menú para configurar el TokenGenerator y CallbackHandler. Ahora, no tengo acceso a los menús que el cliente no está en el proyecto web dinámico. Así que ahora tengo una "desconexión" y que, por supuesto, falla al intentar ejecutarlo en el servidor.

Tiene que haber una manera de hacer esto. Debería ser capaz de generar un frasco cliente y pasarlo lo que necesita. Cualquier persona que encuentro esto antes?

¿Fue útil?

Solución

Ok. He pasado mucho tiempo investigando esto, la lectura Redbooks y artículos de developerWorks y golpeando mi cabeza contra mi teclado y, finalmente, me he metido en alguna parte. No todo el camino, pero casi. (Deseo en algunas cosas IBM era más fácil encontrar ... pero trabajar con lo que le dan. Y con toda justicia, con lo que he leído que tiene sentido y es bastante potente.)

De todos modos, aquí está el truco para tanto las herramientas Rational y WebSphere: Tienes que crear un proyecto Java vacía primero Esta es una de las claves para hacer un cliente de servicios web portátil

Así que aquí es hasta el momento:

  1. Crear un proyecto Java vacía en su IDE. Yo prefiero usar la perspectiva Java EE, ya sea en Rational Application Developer Arquitecto / Software o en WebSphere Integration Developer.
  2. Importar WSDL (s) y el esquema (s) en otro proyecto genérico vacía en su IDE, no en el Proyecto de Java recién creado.
  3. Haga clic en el WSDL principal y optar por generar un cliente de servicios web.
  4. Otra clave aquí : Asegúrese de que en el asistente que aparece que cambie el proyecto de cliente para ser el Proyecto de Java que ha creado en el paso uno. Por defecto, el asistente intentará apuntar a un proyecto Web nuevo o existente dinámico, que no es lo que desea.
  5. Asegúrese de que selecciona JAX-WS como su aplicación. Asegúrese de elegir que desea que el cliente sea "portátil" y asegúrese de que usted le dice al asistente para incluir el WSDL en el cliente Java Project.
  6. A la espera de que tiene todo en orden (y su servidor local que ejecuta), Rational WebSphere herramientas / ahora debe generar el cliente de servicios web JAX-WS en el Proyecto de Java.

maravilloso! ¡Excelente! Ahora usted tiene un proyecto de Java (también conocido como JAR) que se puede utilizar para que sea portátil. Pero ¿cómo hacer que la feliz herramientas de IBM y adjuntar políticas de seguridad para el cliente?

Bueno en primer lugar, he aprendido que lo que realmente es mejor para unir las políticas de seguridad en la consola administrativa de WebSphere Application Server / Enterprise Service Bus / Process Server. Hay demasiadas cosas para intentar dar cuenta de la seguridad para tratar de forma manual código de todo, a pesar de que IBM le da de la API para hacerlo. Créeme. Es más fácil para definir la seguridad en el servidor y luego simplemente asignarla al cliente.

De todos modos .... con el fin de permitir que el cliente sea visible para la Consola de administración para la fijación de los conjuntos de directivas y enlaces de cliente para la seguridad JAX-WS, tiene que estar en el "nivel de web" (a falta de una mejor plazo) a fin de que para ver el frasco como un cliente web. Esto significa que la fijación del frasco como un tarro J2EE Utilidad para el proyecto EAR no funcionarán. El oído es NO "nivel de web", pero es "nivel de aplicación". Así que para hacer esto, es necesario asociar el proyecto Java con la EAR en la pantalla del módulo J2EE Dependencias, pero no como un tarro de utilidad. En lugar de ello marque la casilla que dice "lib". Esto significa que puede ser visible / montado en el directorio lib de un proyecto web dinámico / guerra (que también hay que hacer). Sorprendentemente, la consola de administración será ahora ver tu frasco de cliente como un verdadero JAX-WS cliente de servicios web! Y ahora se puede asociar juegos de políticas y enlaces de cliente a ella con el fin de satisfacer sus necesidades de seguridad!

Esto podría parecer extraño al principio pero tiene clase de algún sentido. Después de todo se trata de un web servicio y que está utilizando protocolos web , por lo que en cierto modo tiene sentido colocar al cliente en el " Nivel web " de la aplicación.

EDIT: he metido con las políticas de seguridad y he descubierto que este desarrollador trabaja artículo más me ayudó. especial de pago atención a la Listado 2 ClientTest.java . Por desgracia, hay que Código de toda la seguridad en el cliente para conseguir que funcione el más limpio. Y entonces aquí hay otro Gotcha. IBM le permitirá crear nombre de usuario Fichas de un cliente que se ejecuta fuera de WebSphere, pero no lo hará le permiten crear fuera de WebSphere LTPA fichas. Así que para probar a los tipos de fichas, que tienen que empaquetar e implementar su cliente a nivel local probar todo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top