Complete Java Enterprise Edition 8 specification APIs providing all standardized enterprise application development interfaces
—
JAX-WS API for building SOAP-based web services with annotation-driven development, comprehensive client support, and WSDL generation.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface WebService {
String name() default "";
String targetNamespace() default "";
String serviceName() default "";
String portName() default "";
String wsdlLocation() default "";
String endpointInterface() default "";
}
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface WebMethod {
String operationName() default "";
String action() default "";
boolean exclude() default false;
}
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface WebParam {
String name() default "";
String targetNamespace() default "";
Mode mode() default Mode.IN;
boolean header() default false;
String partName() default "";
}
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface WebResult {
String name() default "";
String targetNamespace() default "";
boolean header() default false;
String partName() default "";
}@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface WebServiceProvider {
String targetNamespace() default "";
String serviceName() default "";
String portName() default "";
String wsdlLocation() default "";
}
public interface Provider<T> {
T invoke(T request);
}public class Service {
public static Service create(URL wsdlDocumentLocation, QName serviceName);
public static Service create(QName serviceName);
public <T> T getPort(QName portName, Class<T> serviceEndpointInterface);
public <T> T getPort(Class<T> serviceEndpointInterface);
public void addPort(QName portName, String bindingId, String endpointAddress);
public <T> Dispatch<T> createDispatch(QName portName, Class<T> type, Service.Mode mode);
public Dispatch<Source> createDispatch(QName portName, Service.Mode mode);
public Executor getExecutor();
public void setExecutor(Executor executor);
public HandlerResolver getHandlerResolver();
public void setHandlerResolver(HandlerResolver handlerResolver);
}
public interface Dispatch<T> extends BindingProvider {
T invoke(T msg);
Response<T> invokeAsync(T msg);
Future<?> invokeAsync(T msg, AsyncHandler<T> handler);
void invokeOneWay(T msg);
}public interface BindingProvider {
Map<String, Object> getRequestContext();
Map<String, Object> getResponseContext();
Binding getBinding();
EndpointReference getEndpointReference();
<T extends EndpointReference> T getEndpointReference(Class<T> clazz);
String ENDPOINT_ADDRESS_PROPERTY = "javax.xml.ws.service.endpoint.address";
String USERNAME_PROPERTY = "javax.xml.ws.security.auth.username";
String PASSWORD_PROPERTY = "javax.xml.ws.security.auth.password";
String SESSION_MAINTAIN_PROPERTY = "javax.xml.ws.session.maintain";
String SOAPACTION_USE_PROPERTY = "javax.xml.ws.soap.http.soapaction.use";
String SOAPACTION_URI_PROPERTY = "javax.xml.ws.soap.http.soapaction.uri";
}public interface Handler<C extends MessageContext> {
boolean handleMessage(C context);
boolean handleFault(C context);
void close(MessageContext context);
}
public interface SOAPHandler<T extends SOAPMessageContext> extends Handler<T> {
Set<QName> getHeaders();
}
public interface LogicalHandler<C extends LogicalMessageContext> extends Handler<C> {
}
public interface HandlerResolver {
List<Handler> getHandlerChain(PortInfo portInfo);
}public interface MessageContext extends Map<String, Object> {
Scope getScope(String name);
void setScope(String name, Scope scope);
String MESSAGE_OUTBOUND_PROPERTY = "javax.xml.ws.handler.message.outbound";
String INBOUND_MESSAGE_ATTACHMENTS = "javax.xml.ws.binding.attachments.inbound";
String OUTBOUND_MESSAGE_ATTACHMENTS = "javax.xml.ws.binding.attachments.outbound";
enum Scope {
APPLICATION, HANDLER
}
}
public interface SOAPMessageContext extends MessageContext {
SOAPMessage getMessage();
void setMessage(SOAPMessage message);
Object[] getHeaders(QName header, JAXBContext context, boolean allRoles);
Set<String> getRoles();
}
public interface LogicalMessageContext extends MessageContext {
LogicalMessage getMessage();
}public interface SOAPBinding extends Binding {
Set<String> getRoles();
void setRoles(Set<String> roles);
boolean isMTOMEnabled();
void setMTOMEnabled(boolean flag);
String SOAP11HTTP_BINDING = "http://schemas.xmlsoap.org/wsdl/soap/http";
String SOAP12HTTP_BINDING = "http://www.w3.org/2003/05/soap/bindings/HTTP/";
String SOAP11HTTP_MTOM_BINDING = "http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true";
String SOAP12HTTP_MTOM_BINDING = "http://www.w3.org/2003/05/soap/bindings/HTTP/?mtom=true";
}public class SOAPFaultException extends ProtocolException {
public SOAPFaultException(SOAPFault fault);
public SOAPFault getFault();
}
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface FaultAction {
String value() default "";
Class<? extends Exception> className();
}@WebService
public class HelloWorldService {
@WebMethod
public String sayHello(@WebParam(name = "name") String name) {
return "Hello, " + name + "!";
}
}// Create service from WSDL
URL wsdlURL = new URL("http://localhost:8080/hello?wsdl");
QName serviceName = new QName("http://example.com/", "HelloWorldService");
Service service = Service.create(wsdlURL, serviceName);
// Get port
HelloWorldService port = service.getPort(HelloWorldService.class);
// Call web service
String result = port.sayHello("World");@WebServiceProvider
@ServiceMode(Service.Mode.MESSAGE)
public class MessageProvider implements Provider<SOAPMessage> {
@Override
public SOAPMessage invoke(SOAPMessage request) {
// Process SOAP message
return response;
}
}Install with Tessl CLI
npx tessl i tessl/maven-javax--javaee-api