learn/web services

Java Web Service AP

사겅이 2023. 9. 22. 03:51

 

웹 서비스를 개발하기 위한 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