gpt4 book ai didi

java - 如何获取简单的 javax.ws REST 服务 url

转载 作者:行者123 更新时间:2023-12-01 18:01:51 25 4
gpt4 key购买 nike

下面是一个使用 javax.ws 的简单服务的玩具示例。我想获取可从网络浏览器或curl 调用的服务URL。这是玩具服务代码:

package packagename;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.Path;

@WebService
@Path("/service")
public class testserver
{
@GET
@Path("/test")
@WebMethod
public String test()
{
return "<html>Test text here</html>";
}
}

这是服务部署器功能:

package packagename;
import javax.xml.ws.Endpoint;

public class deploy
{
public static void main(String [] args)
{

String endpointURL = "http://localhost:7777/";
Endpoint.publish(endpointURL,new testserver());
}
}

我通过 bash 运行 java 文件,没有错误。

导航到 http://localhost:7777/service/test 不应该生成 test() 函数的文本吗?我的浏览器收到“未找到服务器”错误。

下面是位于 http://localhost:7777/?wsdl 的 wsdl 文件。我正在寻找的信息在这里吗?我通过从下面获取信息(testserverService 等)尝试了一些网址,但没有成功。

  <!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. 
-->
<!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e.
-->
<definitions targetNamespace="http://packagename/" name="testserverService">
<types>
<xsd:schema>
<xsd:import namespace="http://packagename/" schemaLocation="http://localhost:7777/?xsd=1"/>
</xsd:schema>
</types>
<message name="test">
<part name="parameters" element="tns:test"/>
</message>
<message name="testResponse">
<part name="parameters" element="tns:testResponse"/>
</message>
<portType name="testserver">
<operation name="test">
<input wsam:Action="http://packagename/testserver/testRequest" message="tns:test"/>
<output wsam:Action="http://packagename/testserver/testResponse" message="tns:testResponse"/>
</operation>
</portType>
<binding name="testserverPortBinding" type="tns:testserver">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="test">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="testserverService">
<port name="testserverPort" binding="tns:testserverPortBinding">
<soap:address location="http://localhost:7777/"/>
</port>
</service>
</definitions>

我猜答案非常简单,或者我在代码中犯了严重的语法错误。你能帮忙吗?

最佳答案

您混合了 SOAP 和 REST API,这是不正确的。您不能将它们一起用于同一端点。

javax.jws.* 包(称为 JAX-WS)代表 SOAP API

javax.ws.rs.* 包(称为 JAX-RS)代表 REST API

您需要了解 SOAP 和 REST Web 服务之间的区别。您可以查看here有关这些概念的更多详细信息。

假设您正在寻找 REST 服务实现,一般来说,REST 服务会部署到服务器(如 Tomcat、Jetty、Weblogic)中,但如果您需要独立运行它们,请查看 here

关于java - 如何获取简单的 javax.ws REST 服务 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40344142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com