blob: 86de82cadca52b7ad94e1c5cc535923cff30276c [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>ServerEndpoint</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ServerEndpoint";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/websocket/server/ServerContainer.html" title="interface in jakarta.websocket.server"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/websocket/server/ServerEndpointConfig.html" title="interface in jakarta.websocket.server"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/websocket/server/ServerEndpoint.html" target="_top">Frames</a></li>
<li><a href="ServerEndpoint.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.required.element.summary">Required</a>&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">jakarta.websocket.server</div>
<h2 title="Annotation Type ServerEndpoint" class="title">Annotation Type ServerEndpoint</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@Retention(value=RUNTIME)
@Target(value=TYPE)
public @interface <span class="memberNameLabel">ServerEndpoint</span></pre>
<div class="block">This class level annotation declares that the class it decorates is a web socket endpoint that will be deployed and
made available in the URI-space of a web socket server. The annotation allows the developer to define the URL (or URI
template) which this endpoint will be published, and other important properties of the endpoint to the websocket
runtime, such as the encoders it uses to send messages.
<p>
The annotated class must have a public no-arg constructor.
<p>
For example:
<pre>
<code>
&#64;ServerEndpoint("/hello");
public class HelloServer {
&#64;OnMessage
public void processGreeting(String message, Session session) {
System.out.println("Greeting received:" + message);
}
}
</code>
</pre></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== ANNOTATION TYPE REQUIRED MEMBER SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.required.element.summary">
<!-- -->
</a>
<h3>Required Element Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Required Element Summary table, listing required elements, and an explanation">
<caption><span>Required Elements</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Required Element and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/websocket/server/ServerEndpoint.html#value--">value</a></span></code>
<div class="block">The URI or URI-template, level-1 (<a href="http://tools.ietf.org/html/rfc6570">See RFC 6570</a>) where the
endpoint will be deployed.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.optional.element.summary">
<!-- -->
</a>
<h3>Optional Element Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Optional Element Summary table, listing optional elements, and an explanation">
<caption><span>Optional Elements</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Optional Element and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.Class&lt;? extends <a href="../../../jakarta/websocket/server/ServerEndpointConfig.Configurator.html" title="class in jakarta.websocket.server">ServerEndpointConfig.Configurator</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/websocket/server/ServerEndpoint.html#configurator--">configurator</a></span></code>
<div class="block">The optional custom configurator class that the developer would like to use to further configure new instances of
this endpoint.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.Class&lt;? extends <a href="../../../jakarta/websocket/Decoder.html" title="interface in jakarta.websocket">Decoder</a>&gt;[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/websocket/server/ServerEndpoint.html#decoders--">decoders</a></span></code>
<div class="block">The ordered array of decoder classes this endpoint will use.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.Class&lt;? extends <a href="../../../jakarta/websocket/Encoder.html" title="interface in jakarta.websocket">Encoder</a>&gt;[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/websocket/server/ServerEndpoint.html#encoders--">encoders</a></span></code>
<div class="block">The ordered array of encoder classes this endpoint will use.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.String[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/websocket/server/ServerEndpoint.html#subprotocols--">subprotocols</a></span></code>
<div class="block">The ordered array of web socket protocols this endpoint supports.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.element.detail">
<!-- -->
</a>
<h3>Element Detail</h3>
<a name="value--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>value</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;value</pre>
<div class="block">The URI or URI-template, level-1 (<a href="http://tools.ietf.org/html/rfc6570">See RFC 6570</a>) where the
endpoint will be deployed. The URI us relative to the root of the web socket container and must begin with a
leading "/". Trailing "/"'s are ignored. Examples:
<pre>
<code>
&#64;ServerEndpoint("/chat")
&#64;ServerEndpoint("/chat/{user}")
&#64;ServerEndpoint("/booking/{privilege-level}")
</code>
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the URI or URI-template</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="subprotocols--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>subprotocols</h4>
<pre>public abstract&nbsp;java.lang.String[]&nbsp;subprotocols</pre>
<div class="block">The ordered array of web socket protocols this endpoint supports. For example, {"superchat", "chat"}.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the subprotocols.</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>{}</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="decoders--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decoders</h4>
<pre>public abstract&nbsp;java.lang.Class&lt;? extends <a href="../../../jakarta/websocket/Decoder.html" title="interface in jakarta.websocket">Decoder</a>&gt;[]&nbsp;decoders</pre>
<div class="block">The ordered array of decoder classes this endpoint will use. For example, if the developer has provided a
MysteryObject decoder, this endpoint will be able to receive MysteryObjects as web socket messages. The websocket
runtime will use the first decoder in the list able to decode a message, ignoring the remaining decoders.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the decoders.</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>{}</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="encoders--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encoders</h4>
<pre>public abstract&nbsp;java.lang.Class&lt;? extends <a href="../../../jakarta/websocket/Encoder.html" title="interface in jakarta.websocket">Encoder</a>&gt;[]&nbsp;encoders</pre>
<div class="block">The ordered array of encoder classes this endpoint will use. For example, if the developer has provided a
MysteryObject encoder, this class will be able to send web socket messages in the form of MysteryObjects. The
websocket runtime will use the first encoder in the list able to encode a message, ignoring the remaining
encoders.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the encoders.</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>{}</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="configurator--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>configurator</h4>
<pre>public abstract&nbsp;java.lang.Class&lt;? extends <a href="../../../jakarta/websocket/server/ServerEndpointConfig.Configurator.html" title="class in jakarta.websocket.server">ServerEndpointConfig.Configurator</a>&gt;&nbsp;configurator</pre>
<div class="block">The optional custom configurator class that the developer would like to use to further configure new instances of
this endpoint. If no configurator class is provided, the implementation uses its own. The implementation creates
a new instance of the configurator per logical endpoint.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the custom configuration class, or ServerEndpointConfig.Configurator.class if none was set in the
annotation.</dd>
</dl>
<dl>
<dt>Default:</dt>
<dd>jakarta.websocket.server.ServerEndpointConfig.Configurator.class</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/websocket/server/ServerContainer.html" title="interface in jakarta.websocket.server"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/websocket/server/ServerEndpointConfig.html" title="interface in jakarta.websocket.server"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/websocket/server/ServerEndpoint.html" target="_top">Frames</a></li>
<li><a href="ServerEndpoint.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.required.element.summary">Required</a>&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>