<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2_08) on Sat Apr 22 18:56:42 PDT 2006 -->
<TITLE>
ServletEndpointContext (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="javax.xml.rpc.server.ServletEndpointContext interface">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="ServletEndpointContext (Axis API)";
}
</SCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ServletEndpointContext.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../javax/xml/rpc/server/ServiceLifecycle.html" title="interface in javax.xml.rpc.server"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ServletEndpointContext.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
javax.xml.rpc.server</FONT>
<BR>
Interface ServletEndpointContext</H2>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../org/apache/axis/transport/http/ServletEndpointContextImpl.html" title="class in org.apache.axis.transport.http">ServletEndpointContextImpl</A></DD>
</DL>
<HR>
<DL>
<DT>public interface <B>ServletEndpointContext</B></DL>

<P>
The <code>ServletEndpointContext</code> provides an endpoint
 context maintained by the underlying servlet container based
 JAX-RPC runtime system. For service endpoints deployed on a
 servlet container based JAX-RPC runtime system, the context
 parameter in the <code>ServiceLifecycle.init</code> method is
 required to be of the Java type
 <code>javax.xml.rpc.server.ServletEndpointContext</code>.
 <p>
 A servlet container based JAX-RPC runtime system implements
 the <code>ServletEndpointContext</code> interface. The JAX-RPC
 runtime system is required to provide appropriate session,
 message context, servlet context and user principal information
 per method invocation on the endpoint class.
<P>

<P>
<DL>
<DT><B>Version:</B></DT>
  <DD>1.0</DD>
</DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->


<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;javax.servlet.http.HttpSession</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../javax/xml/rpc/server/ServletEndpointContext.html#getHttpSession()">getHttpSession</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The <code>getHttpSession</code> method returns the current
 HTTP session (as a <code>javax.servlet.http.HTTPSession</code>).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../javax/xml/rpc/handler/MessageContext.html" title="interface in javax.xml.rpc.handler">MessageContext</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../javax/xml/rpc/server/ServletEndpointContext.html#getMessageContext()">getMessageContext</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The method <code>getMessageContext</code> returns the
 <code>MessageContext</code> targeted for this endpoint instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;javax.servlet.ServletContext</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../javax/xml/rpc/server/ServletEndpointContext.html#getServletContext()">getServletContext</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The method <code>getServletContext</code> returns the
 <code>ServletContex</code>t associated with the web
 application that contain this endpoint.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.security.Principal</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../javax/xml/rpc/server/ServletEndpointContext.html#getUserPrincipal()">getUserPrincipal</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a <code>java.security.Principal</code> instance that
 contains the name of the authenticated user for the current
 method invocation on the endpoint instance.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../javax/xml/rpc/server/ServletEndpointContext.html#isUserInRole(java.lang.String)">isUserInRole</A></B>(java.lang.String&nbsp;s)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->


<!-- ========= CONSTRUCTOR DETAIL ======== -->


<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="getMessageContext()"><!-- --></A><H3>
getMessageContext</H3>
<PRE>
public <A HREF="../../../../javax/xml/rpc/handler/MessageContext.html" title="interface in javax.xml.rpc.handler">MessageContext</A> <B>getMessageContext</B>()</PRE>
<DL>
<DD>The method <code>getMessageContext</code> returns the
 <code>MessageContext</code> targeted for this endpoint instance.
 This enables the service endpoint instance to acccess the
 <code>MessageContext</code> propagated by request
 <code>HandlerChain</code> (and its contained <code>Handler</code>
 instances) to the target endpoint instance and to share any
 SOAP message processing related context. The endpoint instance
 can access and manipulate the <code>MessageContext</code>
 and share the SOAP message processing related context with
 the response <code>HandlerChain</code>.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>MessageContext; If there is no associated
     <code>MessageContext</code>, this method returns
     <code>null</code>.
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalStateException</CODE> - if this method is invoked outside a
 remote method implementation by a service endpoint instance.</DL>
</DD>
</DL>
<HR>

<A NAME="getUserPrincipal()"><!-- --></A><H3>
getUserPrincipal</H3>
<PRE>
public java.security.Principal <B>getUserPrincipal</B>()</PRE>
<DL>
<DD>Returns a <code>java.security.Principal</code> instance that
 contains the name of the authenticated user for the current
 method invocation on the endpoint instance. This method returns
 <code>null</code> if there is no associated principal yet.
 The underlying JAX-RPC runtime system takes the responsibility
 of providing the appropriate authenticated principal for a
 remote method invocation on the service endpoint instance.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>A <code>java.security.Principal</code> for the
 authenticated principal associated with the current
 invocation on the servlet endpoint instance;
 Returns <code>null</code> if there no authenticated
 user associated with a method invocation.</DL>
</DD>
</DL>
<HR>

<A NAME="getHttpSession()"><!-- --></A><H3>
getHttpSession</H3>
<PRE>
public javax.servlet.http.HttpSession <B>getHttpSession</B>()</PRE>
<DL>
<DD>The <code>getHttpSession</code> method returns the current
 HTTP session (as a <code>javax.servlet.http.HTTPSession</code>).
 When invoked by the service endpoint within a remote method
 implementation, the <code>getHttpSession</code> returns the
 HTTP session associated currently with this method invocation.
 This method returns <code>null</code> if there is no HTTP
 session currently active and associated with this service
 endpoint. An endpoint class should not rely on an active
 HTTP session being always there; the underlying JAX-RPC
 runtime system is responsible for managing whether or not
 there is an active HTTP session.
 <p>
 The getHttpSession method throws <code>JAXRPCException</code>
 if invoked by an non HTTP bound endpoint.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>The HTTP session associated with the current
 invocation or <code>null</code> if there is no active session.
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../javax/xml/rpc/JAXRPCException.html" title="class in javax.xml.rpc">JAXRPCException</A></CODE> - - If this method invoked by a non-HTTP bound
         endpoints.</DL>
</DD>
</DL>
<HR>

<A NAME="getServletContext()"><!-- --></A><H3>
getServletContext</H3>
<PRE>
public javax.servlet.ServletContext <B>getServletContext</B>()</PRE>
<DL>
<DD>The method <code>getServletContext</code> returns the
 <code>ServletContex</code>t associated with the web
 application that contain this endpoint. According to
 the Servlet specification, There is one context per web
 application (installed as a WAR) per JVM . A servlet
 based service endpoint is deployed as part of a web
 application.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the current <code>ServletContext</code></DL>
</DD>
</DL>
<HR>

<A NAME="isUserInRole(java.lang.String)"><!-- --></A><H3>
isUserInRole</H3>
<PRE>
public boolean <B>isUserInRole</B>(java.lang.String&nbsp;s)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ServletEndpointContext.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../javax/xml/rpc/server/ServiceLifecycle.html" title="interface in javax.xml.rpc.server"><B>PREV CLASS</B></A>&nbsp;
&nbsp;NEXT CLASS</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ServletEndpointContext.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright © 2005 Apache Web Services Project. All Rights Reserved.
</BODY>
</HTML>
