如何从WSDL生成Web服务

3
我知道这个问题已经被问了几次,但是我查看了stackoverflow的历史/问题,并没有完全回答我想做的事情。我有一个WSDL文件,我想为该WSDL生成一个Web服务。我知道我必须手动编写一些内容,但这就是我需要帮助的部分。
我有一个WSDL文件,将其保存在/home/username/java/ws/wsdl/test.wsdl中。我还有一个xsd,在/home/username/java/ws/wsdl/test.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
我得到了错误: Exception in thread "main" java.lang.NoSuchMethodError: main
我猜这是一些非常微不足道的东西,但我不是一个Java人。
如果有帮助,感谢!
谢谢!

你能详细介绍一下你使用的环境吗,例如 apache cxf、axis2 等等吗?同时,建议使用像 Eclipse 或 NetBeans 这样的 IDE,因为我看到你是在记事本上编写并手动编译。SB - Samantha
我正在使用Linux环境,所有操作都是在命令行执行。我试图不使用eclipse等集成开发环境。我在使用xemacs进行开发。 - Sonny
1个回答

0

通常,Web服务将安装在Java Web服务器上,例如Tomcat、Jboss、Jetty、Websphere,在war文件中。

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

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

如果您将其作为独立应用程序,则需要嵌入式HTTP服务器。


我知道我需要一个Web服务器--这方面不用担心。如果你看一下(https://dev59.com/DVbTa4cB1Zd3GeqP6wfo#5598853),你会发现从实现中获取webservice(而不是合同)更容易,并且似乎不需要更多的Java库在WebService和WebMethod中,这两个都嵌入在我的代码中。我错过了什么? - Sonny
在WsImpl中没有main函数。wsimport命令将生成代码,然后您需要从应用程序中调用它,可以是部署在Web服务器上的应用程序或独立应用程序。当您尝试执行java ... WsImpl时,java命令会寻找main函数,但找不到,因此会抛出错误。 - James Black
好的。我已经理解了关于主函数的部分。那么在主函数中,我需要添加什么来部署Web服务呢?当我添加main()函数时,程序就会退出,而Web服务没有被部署。为了检查Web服务是否已经被部署,我在主函数中添加了一个sleep,但这也没有帮助。我不确定我是否理解正确。 - Sonny
你可能想看一下这个:http://tech-eureka.blogspot.com/2009/10/jax-ws-inside-jetty.html - James Black

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接