###1、将wsdl文件导入WEB-INF
###2、导入jaxws-ri的包
###3、在WEB-INF目录下创建sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8"?>
<endpoints
xmlns="http://java.sum.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint name="UserService"
implementation="com.chb.service.UserServiceImpl"
url-pattern="/us"/>
</endpoints>
###4、创建web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<!--服务的名称—>
<servlet-name>UserService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserService</servlet-name>
<url-pattern>/us</url-pattern>
</servlet-mapping>
</web-app>
错误: 一直无法访问服务
sun-jaxws.xml和web.xml本应该在WEB-INF目录下, 但是被我放在了WEB-INF同级目录。
另一个错误:
qyyx_02_tomcat是有qyyx_01项目复制过来的,但是加载到tomcat中, 出现
wsdl文件中配置的是
<!-- service -->
<wsdl:service name="UserService">
<wsdl:port binding="tns:userServiceSOAP" name="UserServicePort">
<soap:address location="http://localhost:8080/qyyx_02_tomcat/us"/>
</wsdl:port>
</wsdl:service>
但是访问qyyx_01成功, 为什么?
发现在 web project setting中Context root为qyyx_01
访问服务 http://localhost:8080/qyyx_02_tomcat/us
但是, 和wsdl中定义的service不一致, 这个地方不明白
客户端
根据wsdl 的url 生成客户端所需代码
注意是通过url,而不是wsdl文件生成的
\JavaWeb\qyyx_02_tomcat_client\src>wsimport -d .\ -keep -verbose http://localhost:8080/qyyx_02_tomcat/us?wsdl
测试客户端
package com.chb.service.client;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import org.junit.Before;
import org.junit.Test;
import com.chb.service.IUserService;
import com.chb.service.User;
import com.chb.service.UserException_Exception;
import com.chb.service.UserService;
/**
* wsimport -d G:\JavaWeb\qyyx_01_client\src -verbose -keep http://localhost:9999/us?wsdl
*/
public class MyClient {
private IUserService iMyService;
@Before
public void init() throws MalformedURLException {
//创建访问的URL
URL url = new URL("http://10.255.40.120:8080/qyyx_02_tomcat/us?wsdl");
QName qName = new QName("http://service.chb.com/", "UserService");
UserService msis = new UserService(url, qName);
//获取IMyService, 简单多了
iMyService = msis.getUserServicePort();
}
@Test
public void testAdd() {
User user = new User();
user.setUsername("wx");
user.setNickname("wuxin");
user.setPassword("111");
try {
iMyService.add(user);
} catch (UserException_Exception e) {
e.printStackTrace();
}
}
@Test
public void testList() {
for (User u : iMyService.list()) {
System.out.println(u);
}
}
@Test
public void testLogin() {
try {
System.out.println(iMyService.login("chb", "123456"));
} catch (UserException_Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}