EJB 모형의 WEB 서비스

웹 서비스도 분포식 기술이다. 그와 EJB의 가장 큰 차이점은 웹 서비스는 업계 규범에 속하고 플랫폼과 언어를 뛰어넘을 수 있다는 것이다. EJB는 자바 플랫폼의 규범에 속한다. 이론적으로 플랫폼을 뛰어넘을 수 있지만 실현하는 것은 매우 복잡하다. 자바 EE는 웹 서비스에 두 가지 다른 프로그래밍 모델을 제공했다. EJB 용기 모델과 웹 용기 모델, 다음은 JAX-WS2이다.x규범 소개 웹 서비스 개발
1. 먼저 서버 사이드 코드를 작성하고 자바 프로젝트를 새로 만들고 JBoss의client 디렉터리에 있는jar 패키지를 프로젝트에 도입
솔리드 클래스 Order는 다음과 같습니다.

package com.lamp.bean;

import java.io.Serializable;

public class Order implements Serializable{

	private static final long serialVersionUID = 9138560163090982706L;
	private String orderId;
	private String name;
	public Order(){}
	public String getOrderId() {
		return orderId;
	}
	public void setOrderId(String orderId) {
		this.orderId = orderId;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	

}

인터페이스 클래스 OrderService

package com.lamp.service;

import java.util.List;

import com.lamp.bean.Order;

public interface OrderService {
	public Order getOrder(String orderId);
	public List<Order> getOrders();
	public String getUsername(String name);
}

실현류

package com.lamp.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jws.WebService;

import com.lamp.bean.Order;
import com.lamp.service.OrderService;


@WebService(targetNamespace="http://ws.lamp.com",
		name="OrderService",
		serviceName="OrderServiceBean")
@Stateless
@Remote(OrderService.class)
public class OrderServiceBean implements OrderService {

	public Order getOrder(String orderId) {
		Order order = new Order();
		order.setOrderId(orderId);
		order.setName(" ");
		return order;
	}

	public List<Order> getOrders() {
		List<Order> orders = new ArrayList<Order>();
		Order order = new Order();
		order.setOrderId("01");
		order.setName(" ");
		
		Order order2 = new Order();
		order2.setOrderId("02");
		order2.setName(" ");
		
		orders.add(order);
		orders.add(order2);
		return orders;
	}

	public String getUsername(String name) {
		return name;
	}

}

프로젝트로jar를 포장하여 JBoss의 배치 디렉터리에 배치하다
이어서 우리는 클라이언트를 개발하여 자바 프로젝트를 새로 만들고 루트 디렉터리에 lib 폴더를 새로 만들며 JAX-WS의jar 파일을lib 폴더로 복사하는 동시에 프로젝트의 구축 경로에 도입합니다
프로젝트의 루트 디렉터리에build를 새로 만듭니다.xml 파일

<?xml version="1.0" encoding="UTF-8"?>
<project name="WSClient" default="wsclientgen" basedir=".">
	<property name="src.dir" value="${basedir}/src"></property>
	<path id="build.classpath" description=" ">
		<fileset dir="${basedir}/lib">
			<include name="*.jar"/>
		</fileset>
	</path>

	<target name="wsclientgen" description=" webservice ">
		<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" classpathref="build.classpath"/>
		<wsimport wsdl="http://127.0.0.1:8080/WebService/OrderServiceBean?wsdl" sourcedestdir="${src.dir}" package="com.lamp.ws.client" keep="true"
		verbose="true" destdir="${basedir}/bin"/>
	</target>
	
</project>

ant를 실행함으로써 우리는 클라이언트 클래스를 얻었다
테스트 클래스를 작성하여 테스트하다

package junit.test;


import java.util.List;

import org.junit.BeforeClass;
import org.junit.Test;

import com.lamp.ws.client.Order;
import com.lamp.ws.client.OrderService;
import com.lamp.ws.client.OrderServiceBean;

public class WSTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}
	
	@Test
	public void getUsername(){
		OrderServiceBean service = new OrderServiceBean();
		OrderService orderService = service.getOrderServicePort();
		System.out.println(orderService.getUsername(" "));
	}
	
	@Test
	public void getOrders(){
		OrderServiceBean service = new OrderServiceBean();
		OrderService orderService = service.getOrderServicePort();
		List<Order> orders = orderService.getOrders();
		for(Order order:orders){
			System.out.println(order.getName());
		}
	}
}

테스트를 실행하면 컨트롤러에서 우리가 필요로 하는 결과를 볼 수 있다

좋은 웹페이지 즐겨찾기