【问题标题】:How to generate a web service from a WSDL如何从 WSDL 生成 Web 服务
【发布时间】:2011-06-21 21:52:44
【问题描述】:

我知道这个问题已被问过几次,但我检查了 stackoverflow 历史/问题,它并没有完全回答我想要做的事情。我有一个 WSDL。我想为该 WSDL 生成一个 Web 服务。我知道我必须手动编写一些东西,但这是我需要帮助的部分。

我有一个 WSDL。我将它保存在 /home/username/java/ws/wsdl/test.wsdl 中。我在 /home/username/java/ws/wsdl/test.xsd 也有一个 xsd,由上述 WSDL 使用。

我为此生成服务器存根,如下所示:

[/home/username/java/ws/wsdl/] $ wsimport -p com.uptimeservice.ws -d build/classes -s src wsdl/test.wsdl

现在,我需要一个实现者。我在 /home/username/java/ws/src/WsImpl.java 下创建一个这样的:

package com.uptimeservice;  

import javax.jws.WebService;  

import com.uptimeservice.ws.*;  

@WebService(name = "UptimeService",
        targetNamespace = "test",  
    serviceName = "UptimeService",  
    portName = "UptimeServiceSOAP",  
    endpointInterface = "com.uptimeservice.ws.UptimeService",
    wsdlLocation = "/home/username/java/ws/wsdl/test.wsdl")  
public class WsImpl implements UptimeService {  

@Override
public UptimeResponseType uptimeRequest(UptimeRequestType msg) {  
    UptimeResponseType resp = null;
        return resp;  
    }  
}  

我是这样编译的: [/home/username/java/ws/src/] $ javac -classpath /home/username/java/ws/build/classes/:. com/uptimeservice/WsImpl.java

然后当我尝试部署服务时,如下所示: /home/username/java/ws/src/] $ java -classpath /home/username/java/ws/build/classes/:. com/uptimeservice/WsImpl

我得到错误: 线程“main”中的异常 java.lang.NoSuchMethodError: main

我的猜测是,这是一件非常琐碎的事情,但我不是 Java 人。

感谢任何帮助。

谢谢!

【问题讨论】:

  • 您能否详细说明您使用的环境,例如apache cxf,axis2等...?还建议使用像 eclipse 或 netbeans 这样的 ide,因为我可以看到您正在一些记事本上编写并手动编译它。某人
  • 我使用的是Linux环境,一切都只是命令行。我正在尝试不使用 eclipse 等。我正在使用 xemacs 进行开发。

标签: java linux wsdl wsimport


【解决方案1】:

一般来说,webservice 会安装在 java web 服务器上,例如 Tomcat、Jboss、Jetty、Websphere,在一个 war 文件中。

您正尝试手动运行它,作为独立应用程序,所有独立应用程序都需要一个名为 main 的主函数,例如 C 或 C#。

那么,您将如何实际部署它,在网络服务器上还是作为独立应用程序?

如果你将它作为一个独立的应用程序,那么你将需要一个嵌入式 http 服务器,顺便说一句。

【讨论】:

  • 我知道我需要一个网络服务器——不用担心。如果您查看 (stackoverflow.com/questions/5595028/…),您会发现从实现(而不是合同)中获取 Web 服务更容易,并且似乎不需要更多的 Java 库,这两个都是嵌入的 WebService 和 WebMethod在我的代码中。我错过了什么?
  • 在 WsImpl 中没有 main。 wsimport 命令将生成代码,然后您需要从部署在网络服务器上或从独立应用程序中的应用程序调用它。当您尝试执行 java ... WsImpl 时,java 命令正在寻找一个 main,而不是找到它,所以抛出一个错误。
  • 好的。关于我已经得到的主要部分。部署 Web 服务的主要内容是什么?当我添加 main() 时,它只是退出程序,并且没有部署 web 服务。为了检查是否部署了 web 服务,我在 main 中添加了一个 sleep,但这也无济于事。我不确定我是否跟随。
  • 你可能想看看这样的东西:tech-eureka.blogspot.com/2009/10/jax-ws-inside-jetty.html
猜你喜欢
  • 2010-11-26
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 2015-09-09
  • 1970-01-01
相关资源
最近更新 更多