spring - ws Endpoint

@Endpoint
public class UserServiceEndpoint{
 
    @PayloadRoot(localPart="UserRequest",namespace="http://xxx.xxx.xxx/ws")
    public @ResponsePayload UserResponse getUsers(@RequestPayload UserRequest request){
        int userCount=request.getUserCount();
        String targetCompanyId=request.getTargetCompany();
        UserResponse response=new UserResponse();
        List<User> users=new ArrayList<User>();
        for(int i=0;i<userCount;i++){
            User user=new User();
            user.setBirthday(new Date());
            user.setCompanyId(targetCompanyId);
            user.setGender(true);
            user.setUsername("user"+i);
            users.add(user);
        }
        response.setUsers(users);
        return response;
    }
}

Spring-WS提供的Annotation

@Endpoint
表示当前这个类将作为Spring-WS的一个Endpoint,它可以接收特定的用户请求,执行其中的业务方法。

@PayloadRoot(localPart="UserRequest",namespace="http://xxx.xxx.xxx/ws")
表明当前这个getUsers方法支持Webservice以SOAP消息的XML root节点名及namespace来匹配找到该方法。SOAP消息body部分XML节点名为UserRequest,同时采用http://xxx.xxx.xxx/ws作为namespace的SOAP消息,一旦我们的客户端发出的SOAP消息满足上述条件就会执行这里的getUsers方法。


@RequestPayload的Annotation,这就表示这个UserRequest值需要从客户端请求的SOAP消息的Body当中解析出来,解析后的Body部分的XML要反序列化成这里需要的UserRequest对象。最后在这个方法的返回值UserResponse前面我们还添加了一个名为@ResponsePayload的Annotation,表示这个返回值将作为响应的负载返回到Webservice调用客户端。

 Endpoint编写完成之后,接下来我们就可以将上述编写XSD及Endpoint类配置到Spring环境当中。

< context:component-scan base-package = "ws" ></ context:component-scan >
< sws:annotation-driven />


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring可以通过使用JAX-WS API和Spring-WS来搭建Web服务。下面是使用Spring搭建Web服务的步骤: 1.添加Spring Web Services依赖项,例如: ```xml <dependency> <groupId>org.springframework.ws</groupId> <artifactId>spring-ws-core</artifactId> <version>3.0.7.RELEASE</version> </dependency> ``` 2.创建一个Endpoint类,该类将实现您的Web服务。例如: ```java @Endpoint public class MyEndpoint { private static final String NAMESPACE_URI = "http://example.com/spring-ws"; private MyService myService; @Autowired public MyEndpoint(MyService myService) { this.myService = myService; } @PayloadRoot(namespace = NAMESPACE_URI, localPart = "MyRequest") @ResponsePayload public MyResponse handleMyRequest(@RequestPayload MyRequest request) { // 处理请求并返回响应 } } ``` 3.创建一个Spring配置文件,例如: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:sws="http://www.springframework.org/schema/web-services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd"> <sws:annotation-driven/> <bean id="myService" class="com.example.MyServiceImpl"/> <bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping"/> <bean class="org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter"> <constructor-arg ref="marshaller"/> </bean> <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="contextPath" value="com.example"/> </bean> <sws:dynamic-wsdl id="myWsdl" portTypeName="MyPort" locationUri="/ws"> <sws:xsd location="/WEB-INF/my.xsd"/> </sws:dynamic-wsdl> <sws:interceptors> <bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/> </sws:interceptors> </beans> ``` 4.在web.xml中添加Spring的DispatcherServlet,例如: ```xml <servlet> <servlet-name>myServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping> ``` 5.启动您的Web服务,例如: ```java public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值