Flash Player (GMT +X) -> IExternizable methods (GMT + X - X = GMT + 0) - > AMF over HTTP (GMT + 0) -> Granite AMF0Deserializer (GMT + 0) -> Granite Converter (GMT + 0 + Y = GMT + Y) -> Java Services (GMT + Y)Java Services (GMT + Y) -> Granite Converter (GMT + Y - Y = GMT + 0) -> Granite AMF0Deserializer (GMT + 0) -> AMF over HTTP (GMT + 0) -> IExternizable methods (GMT + 0 + X = GMT + X) -> Flash Player (GMT + X)
We use
GMT + 0
for AMF for convention
define a
fixed timezone
for your AMF that is over HTTP
GMT + X
: timezone for your flex client
GMT + Y
: timezone for your server
don't want to modify the default templates
override the readExternal / writeExternal methods and do the conversion here.
The patch is to use a custom template for generating your as files with a conversion to GMT 0 in the implementations of IExternalizable methods.On the server-side you add a Converter to convert dates GMT 0 to dates GMT + Y.
describing its parameter object and is therefore not type-safe and its use is subject to many syntax errors.
GraniteDS provides a Java-like reflection API that encapsulates describeType calls and offers a type-safe, object-oriented, set of
reflection classes and methods
caches its results for better performance
supports advanced features such as ApplicationDomain
and namespaces
we believe that providing solid support for
standardized PaaS-based programming and multi-tenancy would delay the
release of Java EE 7 until the spring of 2014
way
too long
defer the remaining aspects of our agenda for PaaS
enablement and multi-tenancy support to
Java EE 8
already laid some of the infrastructure for cloud
support in Java EE 7
possible to define common handlers for particular fault codes on the client-side, and exception converters on the server-side, to convert server exceptions to common fault codes
* instead of *wrapping* the server-side exception and rethrowing it to the client,
** extract only details relevant to the client (eg. include: human-friendly error message and any helpful parametrized data, exclude: stack traces),
** "wrap" it in a generic ServiceException, which gets "thrown" remotely to the client
* client can check ServiceException.getCode() to implement behavior tailored to server-side exception 'type'
always have to include this library in either
WEB-INF/lib
support for CDI is included in the library granite-cdi.jar
10.1. Configuration with Servlet 3
On Servlet 3 compliant containers, GraniteDS can use the new APIs to automatically register its own servlets and filters and thus does not need any
particular configuration in web.xml. This automatic setup is triggered when GraniteDS finds a class annotated with
@FlexFilter in one of the application archives:
@FlexFilter declaration will setup an AMF processor for the specified url pattern
tideAnnotations
defines suitable default values
@TideEnabled
@RemoteDestination
always declared by default
tideInterfaces
tideRoles
exceptionConverters
identity
10.3.2. Typesafe Remoting with Dependency Injection
It is possible to benefit from even more type safety by using the annotation [Inject] instead of In.
When using this annotation, the full class name is used to find the target bean in the CDI context instead of the bean name.
Security
integration between the client RemoteObject
credentials and the server-side container security
client-side component named
amf3MessageInterceptor
API to define runtime authorization checks on the Flex UI