|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface SipServletResponse
Represents SIP responses. Instances of this class are passed to servlets when the container receives incoming SIP responses and also, servlets acting as UA servers or proxies generates SIP responses of their own by creating SipServletResponses
.
SIP responses has a three-digit status code that indicates the outcome of the corresponding request. Responses with a status code in the range of 100-199 (1xx's) are called provisional or informational and indicate progress in processing of the request. Any response with a status code of 200 or higher is a final response. A UA server may send only one final response per request but this may be preceeded by any number of provisional responses.
2xx responses indicate a successful outcome while 3xx-6xx indicate a variety of non-success conditions.
The summary of status codes is [RFC 3261]:
Note: Because of a change in Servlet spec 2.4 the setCharacterEncoding()
does NOT throw the java.io.UnsupportedEncodingException
as derived from SipServletMessage.setCharacterEncoding(String)
but inherits a more generic setCharacterEncoding()
method from the javax.servlet.ServletResponse
.
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface javax.servlet.sip.SipServletMessage |
---|
SipServletMessage.HeaderForm |
Field Summary | |
---|---|
static int |
SC_ACCEPTED Status code (202) indicating that the request has been accepted for processing, but the processing has not been completed. |
static int |
SC_ADDRESS_INCOMPLETE Status code (484) indicating that the server received a request with a To (Section 6.37) address or Request-URI that was incomplete. |
static int |
SC_ALTERNATIVE_SERVICE Status code (380) indicating alternative service. |
static int |
SC_AMBIGUOUS Status code (485) indicating that the callee address provided in the request was ambiguous. |
static int |
SC_BAD_EVENT Status code (489) indicating that the server did not understand the event package specified in a "Event" header field. |
static int |
SC_BAD_EXTENSION Status code (420) indicating that the server did not understand the protocol extension specified in a Require (Section 6.30) header field. |
static int |
SC_BAD_GATEWAY Status code (502) indicating that the server, while acting as a gateway or proxy, received an invalid response from the downstream server it accessed in attempting to fulfill the request. |
static int |
SC_BAD_IDENTITY_INFO Status code (436) indicating that the Identity-Info header contains a URI that cannot be dereferenced by the verifier (either the URI scheme is unsupported by the verifier, or the resource designated by the URI is otherwise unavailable). |
static int |
SC_BAD_REQUEST Status code (400) indicating Bad Request. |
static int |
SC_BUSY_EVERYWHERE Status code (600) indicating that the callee's end system was contacted successfully but the callee is busy and does not wish to take the call at this time. |
static int |
SC_BUSY_HERE Status code (486) indicating that the callee's end system was contacted successfully but the callee is curently not willing or able to take additional call. |
static int |
SC_CALL_BEING_FORWARDED Status code (181) indicating the call is being forwarded. |
static int |
SC_CALL_LEG_DONE Status code (481) indicating Call Leg/Transaction does not exist. |
static int |
SC_CALL_QUEUED Status code (182) indicating the call is queued. |
static int |
SC_CONDITIONAL_REQUEST_FAILED Status code (412) indicating that the precondition given for the request has failed. |
static int |
SC_DECLINE Status code (603) indicating that the callee's machine was successfully contacted but the user explicily does not wish to or cannot participate. |
static int |
SC_DOES_NOT_EXIT_ANYWHERE Status code (604) indicating that the server has authoritative information that the user indicated in the To request field does not exist anywhere. |
static int |
SC_EXTENSION_REQUIRED Status code (421) indicating that the UAS needs a particular extension to process the request, but this extension is not listed in a Supported header field in the request. |
static int |
SC_FORBIDDEN Status code (403) indicating that the caller is forbidden to make such requests. |
static int |
SC_GONE Status code (410) indicating that the requested resource is no longer available at the server an no forwarding address is known. |
static int |
SC_INTERVAL_TOO_BRIEF Status code (423) indicating that the server is rejecting the request because the expiration time of the resource refreshed by the request is too short. |
static int |
SC_INVALID_IDENTITY_HEADER Status code (438) indicating that the verifier receives a message with an Identity signature that does not correspond to the digest-string calculated by the verifier. |
static int |
SC_LOOP_DETECTED Status code (482) indicating that the server received a request with a Via (Section 6.40) path containing itself. |
static int |
SC_MESSAGE_TOO_LARGE Status code (513) indicating that the server was unable to process the request since the message length exceeded its capabilities. |
static int |
SC_METHOD_NOT_ALLOWED Status code (405) indicating that the method specified in the Request-Line is not allowed for the address identified byt the Request-URI. |
static int |
SC_MOVED_PERMANENTLY Status code (301) indicating that the callee has moved permanantly. |
static int |
SC_MOVED_TEMPORARILY Status code (302) indicating that the callee has moved temporarily. |
static int |
SC_MULTIPLE_CHOICES Status code (300) indicating Multiple Choices. |
static int |
SC_NOT_ACCEPTABLE Status code (406) indicating the the resource identified by the request is only capable of generating response entities which have content characteristics not acceptable according to the accept headers sent in the request. |
static int |
SC_NOT_ACCEPTABLE_ANYWHERE Status code (606) indicating that the user's agent was contacted successfully but some aspects of the session description such as the requested media, bandwidth, or addressing style were not acceptable. |
static int |
SC_NOT_ACCEPTABLE_HERE Status code (488) indicating that the response has the same meaning as 606 (Not Acceptable), but only applies to the specific resource addressed by the Request-URI and the request may succeed elsewhere. |
static int |
SC_NOT_FOUND Status code (404) indicating that the server had definitive information that the user does not exist at the domain specified in the Request-URI. |
static int |
SC_NOT_IMPLEMENTED Status code (501) indicating that the server does not support the functionality required to fulfill the request. |
static int |
SC_OK Status code (200) indicating the request succeeded normally. |
static int |
SC_PAYMENT_REQUIRED Status code (402) indicating that the caller needs to make a payment. |
static int |
SC_PRECONDITION_FAILURE Status code (580) indicating failure to meet certain preconditions. |
static int |
SC_PROVIDE_REFERER_IDENTITY Status code (429) indicating that the referee must provide a valid Referred-By token. |
static int |
SC_PROXY_AUTHENTICATION_REQUIRED Status code (407) indicating that the client MUST first authenticate itself with the proxy. |
static int |
SC_REQUEST_ENTITY_TOO_LARGE Status code (413) indicating that the server si refusing to process a request becaus the request entity is larger than the server is willing or able to process. |
static int |
SC_REQUEST_PENDING Status code (491) indicating that the request was received by a UAS that had a pending request within the same dialog. |
static int |
SC_REQUEST_TERMINATED Status code (487) indicating that the request was terminated by a BYE or CANCEL request. |
static int |
SC_REQUEST_TIMEOUT Status code (408) indicating that the server could not produce a response, e.g., a user location, within the time indicated in the Expires request-header field. |
static int |
SC_REQUEST_URI_TOO_LONG Status code (414) indicating that the server if refusing to service the request because the Request-URI is longer than the server is willing to interpret. |
static int |
SC_RINGING Status code (180) indicating the server has located the callee, and callee user agent is Ringing the callee. |
static int |
SC_SECURITY_AGREEMENT_REQUIRED Status code (494) indicating that the client must initiate a security mechanism as defined in RFC 3329. |
static int |
SC_SERVER_INTERNAL_ERROR Status code (500) indicating that the server encountered an unexpected condition that prevented it from fulfilling the request. |
static int |
SC_SERVER_TIMEOUT Status code (504) indicating that the server did not receive a timely response from an external server it accessed in attempting to process the request. |
static int |
SC_SERVICE_UNAVAILABLE Status code (503) indicating that the server is currently unable to handle the request due to a temporary overloading or maintenance of the server. |
static int |
SC_SESSION_INTERVAL_TOO_SMALL Status code (422) indicating that a request contained a Session-Expires header field with a duration below the minimum timer for the server. |
static int |
SC_SESSION_PROGRESS Status code (183) carries miscellaneous call progress information. |
static int |
SC_TEMPORARLY_UNAVAILABLE Status code (480) indicating that the callee's end system was contacted successfully but the callee is currently unavailable (e.g., not logged in or logged in such a manner as to preclude communication with the callee). |
static int |
SC_TOO_MANY_HOPS Status code (483) indicating that the server received a request that contains more Via entries (hops) (Section 6.40) than allowed by the Max-Forwards (Section 6.23) header field. |
static int |
SC_TRYING Status code (100) indicating the server is trying to locate the callee. |
static int |
SC_UNAUTHORIZED Status code (401) indicating that the caller is unauthorized to make this request. |
static int |
SC_UNDECIPHERABLE Status code (493) indicating that the request was received by a UAS that contained an encrypted MIME body for which the recipient does not possess or will not provide an appropriate decryption key. |
static int |
SC_UNSUPPORTED_CERTIFICATE Status code (437) indicating that the verifier cannot validate the certificate referenced by the URI of the Identity-Info header, because, for example, the certificate is self-signed, or signed by a root certificate authority for whom the verifier does not possess a root certificate. |
static int |
SC_UNSUPPORTED_MEDIA_TYPE Status code (415) indicating that the server is refusing to service the request because the message body of the request is in a format not supported by the requested resource for the requested method. |
static int |
SC_UNSUPPORTED_URI_SCHEME Status code (416) indicating that the server cannot process the request because the scheme of the URI in the Request-URI is unknown to the server. |
static int |
SC_USE_IDENTITY_HEADER Status code (428) indicating that the request should be re-sent with an Identity header. |
static int |
SC_USE_PROXY Status code (305) indicating that he call can be better handled by the specified proxy server. |
static int |
SC_VERSION_NOT_SUPPORTED Status code (505) indicating that the server does not support, the SIP protocol version that was used in the request message. |
Method Summary | |
---|---|
SipServletRequest |
createAck() Returns an ACK request object corresponding to this response. |
SipServletRequest |
createPrack() Creates a PRACK request object corresponding to this response. |
java.util.Iterator<java.lang.String> |
getChallengeRealms() Returns an Iterator over all the realms associated with this challenge response. |
ServletOutputStream |
getOutputStream() Always returns null. |
Proxy |
getProxy() Returns the Proxy object associated with the transaction of this SIP response object. |
ProxyBranch |
getProxyBranch() Retruns the ProxyBranch object associated with the transaction of this SIP response object. |
java.lang.String |
getReasonPhrase() Returns the reason phrase for this response object. |
SipServletRequest |
getRequest() Returns the request associated with this response. |
int |
getStatus() Returns the status code of this response object. |
java.io.PrintWriter |
getWriter() Always returns null. |
boolean |
isBranchResponse() Returns true if this is an intermediate final response that arrived on a ProxyBranch . |
void |
send() Causes this response to be sent. |
void |
sendReliably() Requests that this response be sent reliably using the 100rel extension defined in RFC 3262. |
void |
setStatus(int statusCode) Sets the status code of this response object. |
void |
setStatus(int statusCode, java.lang.String reasonPhrase) Sets the status code and reason phrase of this response object. |
Field Detail |
---|
static final int SC_TRYING
static final int SC_RINGING
static final int SC_CALL_BEING_FORWARDED
static final int SC_CALL_QUEUED
static final int SC_SESSION_PROGRESS
static final int SC_OK
static final int SC_ACCEPTED
static final int SC_MULTIPLE_CHOICES
static final int SC_MOVED_PERMANENTLY
static final int SC_MOVED_TEMPORARILY
static final int SC_USE_PROXY
static final int SC_ALTERNATIVE_SERVICE
static final int SC_BAD_REQUEST
static final int SC_UNAUTHORIZED
static final int SC_PAYMENT_REQUIRED
static final int SC_FORBIDDEN
static final int SC_NOT_FOUND
static final int SC_METHOD_NOT_ALLOWED
static final int SC_NOT_ACCEPTABLE
static final int SC_PROXY_AUTHENTICATION_REQUIRED
This status code is used for applications where access to the communication channel (e.g., a telephony gateway) rather than the callee requires authentication.
static final int SC_REQUEST_TIMEOUT
static final int SC_GONE
static final int SC_CONDITIONAL_REQUEST_FAILED
static final int SC_REQUEST_ENTITY_TOO_LARGE
If the condition is temporary, teh server SHOULD include a Retry-After header field to indicate that it is temporary and after what time the client MAY try again.
static final int SC_REQUEST_URI_TOO_LONG
static final int SC_UNSUPPORTED_MEDIA_TYPE
static final int SC_UNSUPPORTED_URI_SCHEME
static final int SC_BAD_EXTENSION
static final int SC_EXTENSION_REQUIRED
static final int SC_SESSION_INTERVAL_TOO_SMALL
static final int SC_INTERVAL_TOO_BRIEF
static final int SC_USE_IDENTITY_HEADER
static final int SC_PROVIDE_REFERER_IDENTITY
static final int SC_BAD_IDENTITY_INFO
static final int SC_UNSUPPORTED_CERTIFICATE
static final int SC_INVALID_IDENTITY_HEADER
static final int SC_TEMPORARLY_UNAVAILABLE
This status is also returned by a redirect server that recognizes the user identified by the Request-URI, but does not currently have a valide forwarding location for that user.
static final int SC_CALL_LEG_DONE
This status is returned under two conditions: The server received a BYE request that does not match any existing call leg or the server received a CANCEL request that does not match any existing transaction. (A server simply discards an ACK referring to an unknown transaction.)
static final int SC_LOOP_DETECTED
static final int SC_TOO_MANY_HOPS
static final int SC_ADDRESS_INCOMPLETE
Note: This status code allows overlapped dialing. With overlapped dialing, the client does not know the length of the dialing string. It sends strings of increasing lengths, prompting the user for more input, until it no longer receives a 484 status response.
static final int SC_AMBIGUOUS
Revealing alternatives can infringe on privacy concerns of the user or the organization. It MUST be possible to configure a server to respond with status 404 (Not Found) or to suppress the listing of possible choices if the request with the URL lee@example.com.
485 Ambiguous SIP/2.0 Contact: Carol Lee <sip:carol.lee@example.com> Contact: Ping Lee <sip:p.lee@example.com> Contact: Lee M. Foote <sip:lee.foote@example.com>
Some email and voice mail systems provide this functionality. A status code separate from 3xx is used since the semantics are different: for 300, it is assumed that the same person or sevice will be reached by the choices provided. While an automated choice or sequential search makes sense for a 3xx response, user intervention is required for a 485 response.
static final int SC_BUSY_HERE
static final int SC_REQUEST_TERMINATED
static final int SC_NOT_ACCEPTABLE_HERE
static final int SC_BAD_EVENT
static final int SC_REQUEST_PENDING
static final int SC_UNDECIPHERABLE
static final int SC_SECURITY_AGREEMENT_REQUIRED
static final int SC_SERVER_INTERNAL_ERROR
static final int SC_NOT_IMPLEMENTED
static final int SC_BAD_GATEWAY
static final int SC_SERVICE_UNAVAILABLE
static final int SC_SERVER_TIMEOUT
static final int SC_VERSION_NOT_SUPPORTED
static final int SC_MESSAGE_TOO_LARGE
static final int SC_PRECONDITION_FAILURE
static final int SC_BUSY_EVERYWHERE
static final int SC_DECLINE
static final int SC_DOES_NOT_EXIT_ANYWHERE
static final int SC_NOT_ACCEPTABLE_ANYWHERE
Method Detail |
---|
SipServletRequest getRequest()
Proxying applications can use the request URI obtained from the request object to correlate an incoming response to one of the several destinations it has been proxied to.
int getStatus()
The Status-Code is a 3-digit integer result code that indicates the outcome of the attempt to understand and satisfy the request.
void setStatus(int statusCode)
statusCode
- status code of this responsevoid setStatus(int statusCode, java.lang.String reasonPhrase)
statusCode
- status code of this responsereasonPhrase
- short textual description of the status codejava.lang.IllegalArgumentException
- if the code is not a SIP allowable status code.java.lang.String getReasonPhrase()
ServletOutputStream getOutputStream() throws java.io.IOException
Message content can be set using the SipServletMessage.setContent(java.lang.Object, java.lang.String)
method.
java.io.IOException
java.io.PrintWriter getWriter() throws java.io.IOException
Message content can be set using the SipServletMessage.setContent(java.lang.Object, java.lang.String)
method.
java.io.IOException
Proxy getProxy()
Proxy
object associated with the transaction of this SIP response object. Such a Proxy object exists if this is a response for a previously proxied request. Otherwise, a Proxy
object does not exist, and null is returned.
Note that the container must return the same Proxy
instance whenever a servlet invokes getProxy
on messages belonging to the same transaction. In particular, a response to a proxied request is associated with the same Proxy
object as is the original request.
Proxy
object associated with this response's transaction, or null if this response was not received for a previously proxied requestProxyBranch getProxyBranch()
ProxyBranch
object associated with the transaction of this SIP response object. Such a ProxyBranch object exists if this is a response for a previously proxied request. Otherwise, a ProxyBranch
object does not exist, and null is returned.
Note that the container must return the same ProxyBranch
instance whenever a servlet invokes getProxyBranch
on messages belonging to the same transaction. In particular, a response to a proxied request is associated with the same ProxyBranch
object as was the request sent on that branch.
ProxyBranch
object associated with this response's transaction, or null if this response was not received for a previously proxied request.void sendReliably() throws Rel100Exception
Applications can test whether the container supports the 100rel extension by checking if the string "100rel" exists in the list of supported extensions available via the ServletContext
attribute "javax.servlet.sip.supported".
Applications can also test the same using the v1.0 mechanism by checking whether an attribute with name "javax.servlet.sip.100rel" exists in the ServletContext
and has a value which equals Boolean.TRUE. However, the v1.0 mechanism is being deprecated in this version in favor of checking using the "javax.servlet.sip.supported" attribute.
Rel100Exception
- if one of the conditions for using the 100rel extension is not satisfied.java.lang.IllegalStateException
- if this response was received from downstream or if it has already been sentvoid send() throws java.io.IOException
send
in interface SipServletMessage
java.io.IOException
- if a transport error occurs when trying to send this responsejava.lang.IllegalStateException
- if this response was received from downstream or if it has already been sentSipServletRequest createAck()
Please note that applications do not generate ACKs for non-2xx responses, as this is done by the container itself.
java.lang.IllegalStateException
- if the transaction state is such that it doesn't allow an ACK to be sent now, e.g. if the original request was not an INVITE, if this response is provisional only, or if an ACK has already been generatedSipServletRequest createPrack() throws Rel100Exception
java.lang.IllegalStateException
- if the transaction state is such that it doesn't allow a PRACK to be sent now, e.g. if a PRACK has already been generated.Rel100Exception
- if the response is not a reliable provisional response or if the original request was not an INVITE.java.util.Iterator<java.lang.String> getChallengeRealms()
Iterator
over all the realms associated with this challenge response.Iterator
over all the realms associated with this challenge response.boolean isBranchResponse()
ProxyBranch
.
This method is used by SipServlet.doResponse()
to delegate handling of any intermediate final responses received on the ProxyBranch to the SipServlet.doBranchResponse()
method.
SipServlet.doResponse(javax.servlet.sip.SipServletResponse)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright 1996, 2010, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Java SIP Servlet API 1.1 Reference
Part Number E17883-01