웹 서비스를 개발하기 위한 Java 플랫폼의 API(응용 프로그래밍 인터페이스) 모음.
다른 응용 프로그램과 통신하고 데이터를 교환하는 데 사용
JAX-RPC(Java API for XML-based RPC)
Java 언어를 사용하여 원격 프로시저 호출(RPC)을 위한 웹 서비스를 개발하는 데 사용되는 API
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
@WebMethod
String sayHello(String name);
}
import javax.jws.WebService;
@WebService(endpointInterface = "com.example.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
import javax.xml.namespace.QName;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;
import java.net.URL;
public class HelloWorldClient {
public static void main(String[] args) throws Exception {
// 서비스의 WSDL URL 설정
String wsdlURL = "http://localhost:8080/HelloWorldService?wsdl";
URL url = new URL(wsdlURL);
// 서비스 및 포트 이름 지정
QName qname = new QName("http://example.com/", "HelloWorldService");
QName portName = new QName("http://example.com/", "HelloWorldPort");
// ServiceFactory를 사용하여 서비스 생성
ServiceFactory factory = ServiceFactory.newInstance();
Service service = factory.createService(url, qname);
// 서비스 인터페이스를 통해 원격 메서드 호출
HelloWorld helloWorld = (HelloWorld) service.getPort(portName, HelloWorld.class);
String response = helloWorld.sayHello("John");
System.out.println(response);
}
}
JAX-WS (Java API for XML Web Services)
XML 기반 웹 서비스를 개발하기 위한 API
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
@WebMethod
String sayHello(String name);
}
import javax.jws.WebService;
@WebService(endpointInterface = "com.example.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import com.example.HelloWorld;
public class HelloWorldClient {
public static void main(String[] args) throws Exception {
QName serviceName = new QName("http://example.com/", "HelloWorldService");
Service service = Service.create(new URL("http://example.com/HelloWorld?wsdl"), serviceName);
HelloWorld hello = service.getPort(HelloWorld.class);
System.out.println(hello.sayHello("John"));
}
}
JAX-RS (Java API for RESTful Web Services)
HTTP를 기반으로 하는 RESTful 서비스를 구축
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/users")
public class UserResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getUsers() {
// 사용자 목록 조회 로직...
return Response.ok().build();
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createUser(User user) {
// 새로운 사용자 생성 로직...
return Response.status(Response.Status.CREATED).build();
}
@PUT
@Path("/{id}")
@Consumes(MediaType.APPLICATION_JSON)
public Response updateUser(@PathParam("id") int id, User updatedUser) {
// 기존 사용자 정보 업데이트 로직...
return Response.ok().build();
}
@DELETE
@Path("/{id}")
public Response deleteUser(@PathParam("id") int id) {
// 사용자 삭제 로직...
return Response.noContent().build();
}
}
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
public class RestClient {
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
// GET 요청
Response getUsersResponse = client.target("http://localhost:8080/users")
.request(MediaType.APPLICATION_JSON)
.get();
System.out.println("GET /users - HTTP 상태 코드: " + getUsersResponse.getStatus());
// POST 요청
User newUser = new User("John Doe", "john@example.com");
Response createUserResponse = client.target("http://localhost:8080/users")
.request()
.post(Entity.json(newUser));
System.out.println("POST /users - HTTP 상태 코드: " + createUserResponse.getStatus());
// PUT 요청
int userIdToUpdate = 1;
User updatedUser = new User("Updated Name", "updated@example.com");
Response updateUserResponse = client.target("http://localhost:8080/users/" + userIdToUpdate)
.request()
.put(Entity.json(updatedUser));
System.out.println("PUT /users/{id} - HTTP 상태 코드: " + updateUserResponse.getStatus());
// DELETE 요청
int userIdToDelete = 1;
Response deleteUserResponse = client.target("http://localhost:8080/users/" + userIdToDelete)
.request()
.delete();
System.out.println("DELETE /users/{id} - HTTP 상태 코드: " + deleteUserResponse.getStatus());
// 클라이언트 종료
client.close();
}
}
'learn > web services' 카테고리의 다른 글
REST API (Representational State Transfer API) (0) | 2023.09.22 |
---|---|
SOAP (Simple Object Access Protocol) (0) | 2023.09.22 |