我正在研究Web服务。我为我的Web应用程序生成了 WSDL 文件。这里基于用户名我收到了用户详细信息。我想在另一个应用程序中运行此Web服务。
这就是我使用 d:> wsimport -keep -s src Wsdl url 生成 .java 文件的原因,我写了Client Class来获取详细信息。但在这里我得到了一个例外。我怎么能克服这一点。
以下是我的 UserName.java 类。通过使用这个类,我生成了wsdl文件。
public class UserName implements UserId {
String result = null;
@Override
public String getName(String name) {
try {
String name1 = name;
JAXBContext jaxbContext = JAXBContext.newInstance(User.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
File file = new File("D:/MyWorkspace/JaxWsWithxml/User.xml");
User userUnmarshal = (User) jaxbUnmarshaller.unmarshal(file);
List<User> list = userUnmarshal.getUser();
for (User user : list)
if (user.getName().equals(name1)) {
result = user.getName();
System.out.println("Id " + " " + user.getId() + " "+ user.getName());
}
} catch (JAXBException e) {
e.printStackTrace();
}
return result;
}
}
以下是 UserId.java 界面
public interface UserId
{
public String getName(String name);
}
以下是 Client.java 在另一个应用程序中,我使用WSDL文件 .java 文件
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
String name1="raj";
int id;
String a=name(name1);
System.out.println("Name is"+a);
}
public static String name(String name1)
{
UserNameService us=new UserNameService();
UserName userNmae=us.getUserName();
return userNmae.getName(name1);
}
}
此处 UserNameService 是 WSDL 文件中的服务名称, WSDL 文件中的 UserName 端口名称。
我的例外是:
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException:
HTTP transport error: java.net.ConnectException: Connection refused: connect
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source)
这是我的例外我该如何解决谢谢...
答案 0 :(得分:1)
首先,您需要检查已部署的服务是否正常运行。因为您正面临连接拒绝异常,我猜服务器运行不正常。或者可能是您的客户端应用程序无法访问Web服务URL。由于您已经拥有WSDL,因此您还可以通过直接引用Java代码/ JAX-WS Client中的WSDL来调用Web服务。
答案 1 :(得分:0)
HTTP传输错误表示您的应用程序当前未运行。首先,您应首先运行Web服务应用程序,然后执行您的客户端代码。它会很好。您的代码无需更改。