恐怕我不能在Scala前端提供任何东西,但就Java而言,您应该将新服务视为您的应用程序的服务层,而REST/SOAP /无论您的服务的接口在Web/Servlet层中定义。
所以,让我们说你有一个像你com.myco.services包的以下服务:
public interface PersonService {
public Person createPerson(PersonIdentifier id, PersonType type);
public Person retrievePerson(PersonIdentifier id);
public void updatePerson(Person existingPerson);
public void deletePerson(Person existingPerson);
public boolean authenticatePerson(String personName, String password);
}
我们将会把它作为阅读你有一个PersonServiceImpl实现这一点,更新数据库管他呢。在您的应用程序中,您可以在同一个JVM中将PersonServiceImpl注入代码并直接调用方法,而无需编组或解组参数。
在Web层中,您可以有一个单独的PersonServiceController映射到您的servlet中的URL。当像“http://myco.com/person/update”这样的URL被击中时,请求的主体可以这样传递给控制器:
public class PersonServiceController {
private final PersonService personService; // Inject PersonServiceImpl in constructor
...
public void updatePerson(String requestBody) {
Person updatedPerson = unmarshalPerson(requestBody);
this.personService.updatePerson(updatedPerson);
}
...
}
这听起来不错,现在什么是最好的优雅的条款在建立?我每次构建客户端时是否都需要构建服务器(这是否称为多模块构建?)或者我只是将它打包并添加为客户端应用程序的依赖项?谢谢。 – parsa 2011-05-18 07:16:03
每个模块都将生成自己的工件 - jar文件,或者可能是Web服务模块的war文件或ear文件。第二个和第三个模块将依赖于第一个模块,即将第一个jar包含在它们的编译时和运行时类路径中。像Maven这样的构建工具将为开发多模块项目提供支持。 – 2011-06-22 11:40:22