The contents is typically multiple messages (ACK,PING etc) or all or part of a RemoteTransactionEvent.
Due to the hard limit on the size of UDP packets a RemoteTransactionEvent with lots of information could be broken up into multiple packets.
@author rbygraveA packet can be thought of as a frame/envelope/package that wraps a {@link Message}. A packet keeps track of optional metadata (properties) about a {@link Message} that doesn't go across the wire.This roughly corresponds to {@link MessageContext} in the JAX-WS API.
Usually a packet contains a {@link Message} in it, but sometimes(such as for a reply of an one-way operation), a packet may float around without a {@link Message} in it.
Information frequently used inside the JAX-WS RI is stored in the strongly-typed fields. Other information is stored in terms of a generic {@link Map} (see{@link #invocationProperties}.)
Some properties need to be retained between request and response, some don't. For strongly typed fields, this characteristic is statically known for each of them, and propagation happens accordingly. For generic information stored in {@link Map}, {@link #invocationProperties}stores per-invocation scope information (which carries over to the response.)
This object is used as the backing store of {@link MessageContext}, and {@link LogicalMessageContext} and {@link SOAPMessageContext} willbe delegating to this object for storing/retrieving values.
{@link BindingProvider#getRequestContext() Request context} is used toseed the initial values of {@link Packet}. Some of those values go to strongly-typed fields, and others go to {@link #invocationProperties}, as they need to be retained in the reply message.
Similarly, {@link BindingProvider#getResponseContext() response context}is constructed from {@link Packet} (or rather it's just a view of {@link Packet}.) by using properties from {@link #invocationProperties}, modulo properties named explicitly in {@link #getHandlerScopePropertyNames(boolean)}. IOW, properties added to {@link #invocationProperties}are exposed to the response context by default.
A packet can be thought of as a frame/envelope/package that wraps a {@link Message}. A packet keeps track of optional metadata (properties) about a {@link Message} that doesn't go across the wire.This roughly corresponds to {@link MessageContext} in the JAX-WS API.
Usually a packet contains a {@link Message} in it, but sometimes(such as for a reply of an one-way operation), a packet may float around without a {@link Message} in it.
Information frequently used inside the JAX-WS RI is stored in the strongly-typed fields. Other information is stored in terms of a generic {@link Map} (see{@link #invocationProperties}.)
Some properties need to be retained between request and response, some don't. For strongly typed fields, this characteristic is statically known for each of them, and propagation happens accordingly. For generic information stored in {@link Map}, {@link #invocationProperties}stores per-invocation scope information (which carries over to the response.)
This object is used as the backing store of {@link MessageContext}, and {@link LogicalMessageContext} and {@link SOAPMessageContext} willbe delegating to this object for storing/retrieving values.
{@link BindingProvider#getRequestContext() Request context} is used toseed the initial values of {@link Packet}. Some of those values go to strongly-typed fields, and others go to {@link #invocationProperties}, as they need to be retained in the reply message.
Similarly, {@link BindingProvider#getResponseContext() response context}is constructed from {@link Packet} (or rather it's just a view of {@link Packet}.) by using properties from {@link #invocationProperties}, modulo properties named explicitly in {@link #getHandlerScopePropertyNames(boolean)}. IOW, properties added to {@link #invocationProperties}are exposed to the response context by default.
Components send packets to each other through input and output ports. Packet is always in two "places" either inside one and only one component or traveling between components. When packet is no longer used is has to be explicitly dropped ( {@link Packet#drop()}).
Packets create thread safety layer between simultaneously running components. Because packets can not be accessed simultaneously by multiple components data traveling in packet is not prone to concurrency issues. Components should take care when duplicating packet contents (or metadata) to multiple packets. Duplicated data should either be immutable, thread safe or not accessed by multiple components.
@see Component @see InputPort @see OutputPort @see InputPorts @see OutputPorts @param < T> The content type of carried content
This class currently contains no implementation because only ethernet is supported. In other words, all instances of packets returned by packet factory will always be at least as specific as EthernetPacket.
On large ethernet networks, I sometimes see packets which don't have link-level ethernet headers. If and when I figure out what these are, maybe this class will be the root node of a packet hierarchy derived from something other than ethernet. @author Patrick Charles and Jonas Lehmann @version $Revision: 1.8 $ @lastModifiedBy $Author: pcharles $ @lastModifiedAt $Date: 2004/05/05 23:14:45 $
There are three core packet types:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|