PDF de programación - 5.3 Diseño por capas con Servicios Web

Imágen de pdf 5.3 Diseño por capas con Servicios Web

5.3 Diseño por capas con Servicios Webgráfica de visualizaciones

Publicado el 22 de Enero del 2019
400 visualizaciones desde el 22 de Enero del 2019
99,2 KB
17 paginas
Creado hace 22a (18/04/2002)
5.3 Diseño por capas con Servicios

Web

Diseño por capas

n Misma idea que en CORBA

Interfaz de usuario

(no WS)

Capa de traducción y

delegación (WS)

Capa de traducción y

delegación (WS)

IDL

Capa de lógica

de negocio (no WS)

Cliente

Implementación del servicio

Ejemplo Movies

n Es una implementación del ejemplo usado en el tema 4

n Se ha implementado el servicio y un cliente

Portal general 1
BD

. . .

Portal general N
BD

Portal especializado

en cine

BD

Internet

Diagrama de paquetes

es::udc::fbellas::corbaws::movies

client

model

proxies

wsdl

wsdlutil

client

model

proxies

wsdl

model

es.udc.fbellas.corbaws.movies.model

MovieInformation

- identifier : Long
- t i t l e : S t r i n g
- runtime : short
- releaseDate : Calendar
- directorNames : List
- a c t o r N a m e s : L i s t
- genres : List
- s y n o p s i s : S t r i n g

+ MovieInformation(...)
+ getIdentifier() : Long
+ getTitle() : String
+ setTitle(title : String) : void
+ getRuntime() : short
+ setRuntime(runtime : short) : void
+ getReleaseDate() : Calendar
+ setReleaseDate(releaseDate : Calendar) : void
+ getDirectorNames() : List
+ setDirectorNames(directorNames : List) : void
+ getActorNames() : List
+ s e t A c t o r N a m e s ( a c t o r N a m e s : L i s t ) : v o i d
+ getGenres() : List
+ setGenres(genres : List) : void
+ getSynopsis() : String
+ setSynopsis(synopsis : String) : void
+ toString() : String

- movieInformationDirectoryName : String

MovieInformationFacade

+ MovieInformationFacade(movieInformationDirectoryName : String)
+ findMovieInformation(releaseDate : Calendar) : Collection
+ storeMovieInformation(movieInformationCollection : Collection) : void

< < u s e > >

0..n

< < u s e > >

DateOperations

- DateOperations()
<<static>> + getDateWithOnlyDayMonthYear(dayAsString : String, monthAsString : String, yearAsString : String) : Calendar
<<static>> + getDateWithOnlyDayMonthYear(date : Calendar) : Calendar

Comentarios (1)

n Este paquete representa la lógica de negocio de la

gestión de la información sobre películas
n Búsqueda de las películas que se se estrenan en una

determinada fecha (sólo se tiene en cuenta el día, mes y
año)

n El servicio web dará acceso a esta funcionalidad

Inserción o actualización de información sobre películas

n

n Es independiente del API de servicios web
n Por simplicidad, el cliente y la implementación del

servicio usan el subpaquete model

Comentarios (y 2)

n Por simplicidad, la implementación de

MovieInformationFacade no usa una BD
n La información sobre cada película se almacena en un

fichero .properties (un fichero por cada película)
n Todos los ficheros residen debajo de un determinado

directorio

n La signatura de las operaciones de

MovieInformationFacade (excepto el constructor) no
delatan si se usa una BD o ficheros

n Se puede cambiar fácilmente en un futuro
n También se podría haber definido

MovieInformationFacade como un interfaz

es.udc.fbellas.corbaws.movies.wsdl

< < I n t e r f a c e > >

R e m o t e
(from rmi)

< < I n t e r f a c e > >

Serializable

(from io)

< < I n t e r f a c e > >

MovieInformationProvider

< < r e t u r n > >

0..n

+ findMovieInformation(date : Date) : MovieInformation[]

MovieInformationProviderSoapBindingImpl

- movieInformationFacade : MovieInformationFacade

+ MovieInformationProviderSoapBindingImpl()

< < u s e > >

< < u s e > >

MovieInformationFacade

C o m m o n W S D L T y p e C o n v e r s o r

(from model)

(from wsdlutil)

MovieInformation

- identifier : Long
- title : String
- runtime : short
- releaseDate : Date
- directorNames : String[]
- a c t o r N a m e s : S t r i n g [ ]
- genres : String[]
- s y n o p s i s : S t r i n g

+ MovieInformation()
+ getIdentifier() : Long
+ setIdentifier(identifier : Long) : void
+ getTitle() : String
+ setTitle(title : String) : void
+ getRuntime() : short
+ setRuntime(runtime : short) : void
+ getReleaseDate() : Date
+ setReleaseDate(releaseDate : Date) : void
+ getDirectorNames() : String[]
+ setDirectorNames(directorNames : String[]) : void
+ g e t A c t o r N a m e s ( ) : S t r i n g [ ]
+ s e t A c t o r N a m e s ( a c t o r N a m e s : S t r i n g [ ] ) : v o i d
+ getGenres() : String[]
+ setGenres(genres : String[]) : void
+ g e t S y n o p s i s ( ) : S t r i n g
+ setSynopsis(synopsis : String) : void

Comentarios

n Obsérvese la diferencia entre los tipos usados en los

subpaquetes model y wsdl
n En model se usa listas de String (java.util.List) y

en wsdl se usa String[] (tipo soportado por JAX-RPC)

n En model se usa colección de MovieInformation

(java.util.Collection) y en wsdl se usa
MovieInformation[] (tipo soportado por JAX-RPC)

n En model se usa java.util.Calendar para las fechas
(mejor alternativa que java.util.Date), y en wsdl se
usa java.util.Date (Axis no soporta
java.util.Calendar)

es.udc.fbellas.corbaws.movies.wsdlutil

CommonWSDLTypeConversor

Contiene métodos para convertir de tipos WSDL a Java y viceversa,
comunes a la implementación del servicio web y al cliente.

es.udc.fbellas.corbaws.movies.proxies

- movieInformationProvider : es::udc::fbellas::corbaws::movies::wsdl::MovieInformationProvider

MovieInformationProvider

+ MovieInformationProvider(movieInformationProviderURL : String)
+ findMovieInformation(date : Calendar) : Collection

11

<<Interface>>

MovieInformationProvider

(from wsdl)

<<return>>

0..n

MovieInformation

(from model)

es.udc.fbellas.corbaws.movies.client

Client

<<static>> + main(args : String[]) : void

<<use>>

<<use>>

MovieInformationProvider

MovieInformationFacade

(from proxies)

(from model)

es.udc.fbellas.corbaws.movies.wsdl.MovieInformationProviderSoapBindingImpl (1)

public class MovieInformationProviderSoapBindingImpl

implements MovieInformationProvider {

private MovieInformationFacade movieInformationFacade;

public MovieInformationProviderSoapBindingImpl() {

try {

movieInformationFacade = new MovieInformationFacade(

getMovieInformationDirectoryName());

} catch (NamingException e) {

e.printStackTrace();

}

}

es.udc.fbellas.corbaws.movies.wsdl.MovieInformationProviderSoapBindingImpl (2)

public MovieInformation[] findMovieInformation(Date releaseDate)

throws es.udc.fbellas.corbaws.movies.wsdl.

InternalErrorException {

try {

Calendar newReleaseDate = Calendar.getInstance();
newReleaseDate.setTime(releaseDate);

return CommonWSDLTypeConversor.toWSDL(

movieInformationFacade.findMovieInformation(

newReleaseDate));

} catch (es.udc.fbellas.corbaws.util.exceptions.

InternalErrorException e) {

throw CommonWSDLTypeConversor.toWSDL(e);

}

}

es.udc.fbellas.corbaws.movies.wsdl.MovieInformationProviderSoapBindingImpl (y 3)

private String getMovieInformationDirectoryName()

throws NamingException {

InitialContext initialContext = new InitialContext();

return (String) initialContext.lookup("java:comp/env/" +

"movieInformationDirectoryName");

}

}

Comentarios (1)

n El constructor de MovieInformationFacade requiere el

nombre del directorio que contiene los ficheros .properties

n Para hacer que el código no dependa del nombre del directorio,
se lee éste de la configuración de la aplicación web (web.xml)
mediante JNDI (javax.naming)

JNDI (Java Naming and Directory Interface)

n

n Entre otras cosas, es un API que permite acceder a la información

de configuración de aplicaciones J2EE

n web.xml

<web-app>
....
<env-entry>

<env-entry-name>movieInformationDirectoryName</env-entry-name>
<env-entry-value>/home/fbellas/Trabajos/DocenciaUDC/ADOO/Ejemplos/

CORBAWS-JavaExamples-src-1.2/Subsystems/Movies/MovieInformation
</env-entry-value>

<env-entry-type>java.lang.String</env-entry-type>

</env-entry>

</web-app>

Comentarios (y 2)

n El valor de una entrada de entorno se lee mediante
una instancia de javax.naming.InitialContext
n El nombre de la entrada que se especifica en lookup es
java:comp/env/<NombreDeLaEntradaEnWeb.xml>

n Ej.: java:comp/env/movieInformationDirectoryName
  • Links de descarga
http://lwp-l.com/pdf14944

Comentarios de: 5.3 Diseño por capas con Servicios Web (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad