在本节简短的介绍中,我们将添加一些接口,以便外部用户可以读取当前的问候语。关于扩展接口以添加问候语的任务留给读者作为练习

JAX-RS

REST很流行(现在在EE 6中以JAX-RS的形式存在),所以让我们把它加入进去。添加

package com.acme.greetings;

import java.util.List;

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path(value = "/RESTExport")
public class RESTExporter
{

   @Inject
   GreetingServer greetingServer;

   @GET
   @Path("/greetings")
   @Produces("application/xml")
   public List<Greeting> getGreetings()
   {
      return greetingServer.getGreetings();
   }

}

这将从服务器获取当前的问候语(注意注入),并以XML格式呈现。为了连接JAX-RS实现,RESTEasy,在web.xml中添加以下内容

<context-param>
	<param-name>resteasy.scan</param-name>
	<param-value>true</param-value>
</context-param>
<context-param>
	<param-name>resteasy.servlet.mapping.prefix</param-name>
	<param-value>/resteasy</param-value>
</context-param>
<listener>
	<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<servlet>
	<servlet-name>Resteasy</servlet-name>
	<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>Resteasy</servlet-name>
	<url-pattern>/resteasy/*</url-pattern>
</servlet-mapping>

并且将@XMLRootElement注释添加到Greeting类的顶部

@Entity
@Audited
@XmlRootElement
public class Greeting

您的问候语现在应从/Greetings/resteasy/RESTExport/greetings处可用。

JAX-WS

添加Web服务甚至更简单。添加

package com.acme.greetings;

import java.util.List;

import javax.inject.Inject;
import javax.jws.WebService;

@WebService
public class WebServiceExporter
{
   @Inject
   GreetingServer greetingServer;

   public List<Greeting> getGreetings()
   {
      return greetingServer.getGreetings();
   }

}

这执行了与我们的RESTExporter类似的工作,然后在web.xml中连接它

<servlet>
	<servlet-name>WSExport</servlet-name>
	<servlet-class>com.acme.greetings.WebServiceExporter</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>WSExport</servlet-name>
	<url-pattern>/WebServiceExport/*</url-pattern>
</servlet-mapping>

嗯。不知道你是否能让它自动注册?无论如何,WSDL应从/Greetings/WebServiceExport?wsdl处可见。

结论

这部分内容比较简短。部分原因是设置事情非常简单,不需要我们做很多变通。希望一旦Aslak完成了Arqullian DBUnit集成(我已经听到了有关JSFUnit集成的传言)我就能写一篇更详细的关于测试应用程序各个部分的文章。


返回顶部