diff --git a/examples/showcase/bin/wsdl2java.bat b/examples/showcase/bin/wsdl2java.bat index 814c4803..07bc578e 100644 --- a/examples/showcase/bin/wsdl2java.bat +++ b/examples/showcase/bin/wsdl2java.bat @@ -1,14 +1,13 @@ @echo off echo Before run this script, please save -echo http://localhost:8080/showcase/soap/accountservice?wsdl -echo to -echo target/wsdl/accountservice.wsdl +echo http://localhost:8080/showcase/soap/accountservice?wsdl to target/wsdl/accountservice.wsdl cd %~dp0/../ call mvn cxf-codegen:wsdl2java if errorlevel 1 goto end echo [INFO] Code had generated to +pause :end pause \ No newline at end of file diff --git a/examples/showcase/pom.xml b/examples/showcase/pom.xml index 66e0bf55..210f9255 100644 --- a/examples/showcase/pom.xml +++ b/examples/showcase/pom.xml @@ -156,6 +156,17 @@ cxf-rt-transports-http + + + + org.apache.cxf + cxf-rt-frontend-jaxrs + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-json-provider + + diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/jaxrs/AccountRestService.java b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/jaxrs/AccountRestService.java new file mode 100644 index 00000000..2c22ffb0 --- /dev/null +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/jaxrs/AccountRestService.java @@ -0,0 +1,43 @@ +package org.springside.examples.showcase.webservice.jaxrs; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springside.examples.showcase.entity.User; +import org.springside.examples.showcase.service.AccountEffectiveService; +import org.springside.examples.showcase.webservice.rest.UserDTO; +import org.springside.modules.mapper.BeanMapper; + +@Path("/user") +public class AccountRestService { + + @Autowired + private AccountEffectiveService accountService; + + @GET + @Path("/{id}.xml") + @Produces(MediaType.APPLICATION_XML) + public UserDTO getAsXml(@PathParam("id") Long id) { + User user = accountService.getUser(id); + return bindDTO(user); + } + + @GET + @Path("/{id}.json") + @Produces(MediaType.APPLICATION_JSON) + public UserDTO getAsJson(@PathParam("id") Long id) { + User user = accountService.getUser(id); + return bindDTO(user); + } + + private UserDTO bindDTO(User user) { + UserDTO dto = BeanMapper.map(user, UserDTO.class); + //补充Dozer不能自动绑定的属性 + dto.setTeamId(user.getTeam().getId()); + return dto; + } +} diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebService.java b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountSoapService.java similarity index 93% rename from examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebService.java rename to examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountSoapService.java index 5d3bbcdc..022eb081 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebService.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountSoapService.java @@ -18,8 +18,9 @@ import org.springside.examples.showcase.webservice.soap.response.dto.UserDTO; * * @author calvin */ +//name 指明wsdl中元素的名称 @WebService(name = "AccountService", targetNamespace = WsConstants.NS) -public interface AccountWebService { +public interface AccountSoapService { /** * 获取团队的详细信息. */ diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebServiceImpl.java b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountSoapServiceImpl.java similarity index 89% rename from examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebServiceImpl.java rename to examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountSoapServiceImpl.java index 0e27e249..5053e22f 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountWebServiceImpl.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/AccountSoapServiceImpl.java @@ -32,11 +32,11 @@ import org.springside.modules.utils.Exceptions; * * @author calvin */ -//serviceName指明WSDL中的名称, endpointInterface属性指向Interface定义类. -@WebService(serviceName = "AccountService", endpointInterface = "org.springside.examples.showcase.webservice.soap.AccountWebService", targetNamespace = WsConstants.NS) -public class AccountWebServiceImpl implements AccountWebService { +//serviceName指明WSDL中与元素的名称, endpointInterface属性指向Interface类全称. +@WebService(serviceName = "AccountService", endpointInterface = "org.springside.examples.showcase.webservice.soap.AccountSoapService", targetNamespace = WsConstants.NS) +public class AccountSoapServiceImpl implements AccountSoapService { - private static Logger logger = LoggerFactory.getLogger(AccountWebServiceImpl.class); + private static Logger logger = LoggerFactory.getLogger(AccountSoapServiceImpl.class); @Autowired private AccountEffectiveService accountService; @@ -45,7 +45,7 @@ public class AccountWebServiceImpl implements AccountWebService { private Validator validator; /** - * @see AccountWebService#getTeamDetail() + * @see AccountSoapService#getTeamDetail() */ @Override public GetTeamDetailResult getTeamDetail(Long id) { @@ -70,7 +70,7 @@ public class AccountWebServiceImpl implements AccountWebService { } /** - * @see AccountWebService#getUser() + * @see AccountSoapService#getUser() */ @Override public GetUserResult getUser(Long id) { @@ -96,7 +96,7 @@ public class AccountWebServiceImpl implements AccountWebService { } /** - * @see AccountWebService#searchUser() + * @see AccountSoapService#searchUser() */ @Override public SearchUserResult searchUser(String loginName, String name) { @@ -113,7 +113,7 @@ public class AccountWebServiceImpl implements AccountWebService { } /** - * @see AccountWebService#createUser() + * @see AccountSoapService#createUser() */ @Override public IdResult createUser(UserDTO user) { diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/response/dto/TeamDTO.java b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/response/dto/TeamDTO.java index a16ea202..2e3420a4 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/response/dto/TeamDTO.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/webservice/soap/response/dto/TeamDTO.java @@ -36,9 +36,9 @@ public class TeamDTO { this.master = master; } - //配置输出xml为1 + //配置输出xml为1 @XmlElementWrapper(name = "userList") - @XmlElement(name = "User") + @XmlElement(name = "user") public List getUserList() { return userList; } diff --git a/examples/showcase/src/main/resources/applicationContext-showcases.xml b/examples/showcase/src/main/resources/applicationContext-showcases.xml index 62402196..9f1c2b21 100644 --- a/examples/showcase/src/main/resources/applicationContext-showcases.xml +++ b/examples/showcase/src/main/resources/applicationContext-showcases.xml @@ -16,5 +16,5 @@ - + \ No newline at end of file diff --git a/examples/showcase/src/main/resources/webservice/applicationContext-rest-server.xml b/examples/showcase/src/main/resources/webservice/applicationContext-rest-server.xml new file mode 100644 index 00000000..61d3640c --- /dev/null +++ b/examples/showcase/src/main/resources/webservice/applicationContext-rest-server.xml @@ -0,0 +1,21 @@ + + + + Apache CXF的Restful Web Service配置 + + + + + + + + + + + + + + diff --git a/examples/showcase/src/main/resources/webservice/applicationContext-soap-server.xml b/examples/showcase/src/main/resources/webservice/applicationContext-soap-server.xml index cf13e73c..e4e3f7f6 100644 --- a/examples/showcase/src/main/resources/webservice/applicationContext-soap-server.xml +++ b/examples/showcase/src/main/resources/webservice/applicationContext-soap-server.xml @@ -4,13 +4,13 @@ xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd" default-lazy-init="true"> - Apache CXF的Web Service配置 - + Apache CXF的 SOAP Web Service配置 + - - + + - + diff --git a/examples/showcase/src/main/webapp/WEB-INF/decorators.xml b/examples/showcase/src/main/webapp/WEB-INF/decorators.xml index 27af114b..d00e42a3 100644 --- a/examples/showcase/src/main/webapp/WEB-INF/decorators.xml +++ b/examples/showcase/src/main/webapp/WEB-INF/decorators.xml @@ -2,7 +2,7 @@ /static/* - /soap/* + /cxf/* /api/* diff --git a/examples/showcase/src/main/webapp/WEB-INF/layouts/left.jsp b/examples/showcase/src/main/webapp/WEB-INF/layouts/left.jsp index 0a11bc60..53f2b335 100644 --- a/examples/showcase/src/main/webapp/WEB-INF/layouts/left.jsp +++ b/examples/showcase/src/main/webapp/WEB-INF/layouts/left.jsp @@ -10,13 +10,13 @@

独立演示

演示说明