如何解决无法查看wsdl文档jax-ws
我正在尝试使用带注释的类和Jax-WS部署Web服务。我正在使用maven进行部署。
该类只是我以前在Java 8中使用的示例程序。我最近移到Java 11,它不再起作用。我知道Java 11的所有更改,并且添加了许多不同的依赖关系集(我以前使用com.sun.xml.ws:rt:2.3.1和javax.xml.ws:jaxws-api取得了成功: 2.3.1和Java 9)。
我可以在Java 11中以这种方式使用Jax-WS,还是需要切换到自顶向下的方法?
谢谢!
代码:
package quote;
import java.util.Map;
import java.util.TreeMap;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;
import javax.xml.ws.Endpoint;
@WebService
@SOAPBinding(style = Style.RPC,use= Use.LITERAL)
public class StockPrice {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9000/quote",new StockPrice());
}
private Map<String,Double> prices = new TreeMap<>();
{
prices.put("IBM",143.79);
prices.put("GOOGL",1209.70);
prices.put("MSFT",137.44);
prices.put("FB",175.25);
prices.put("TWTR",40.22);
}
@WebMethod public double GetStockQuote(String StockName) {
Double price = prices.get(StockName);
return price == null ? -1:price;
}
}
pom.xml文件:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>examples</groupId>
<artifactId>service</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>9.0.38</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>webservices-rt</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>jakarta.xml.ws</groupId>
<artifactId>jakarta.xml.ws-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- <dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-ri</artifactId>
<version>2.3.1</version>
<type>pom</type>
</dependency> -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<mainClass>quote.StockPrice</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
解决方法
因此,我设法自己解决了这个问题。似乎Web服务的发布方式存在问题-endpoint.publish(...)
方法无法像以前那样工作。
要解决此问题,我必须使用以下main()
方法:
public static void main(String[] args) throws IOException {
Endpoint endpoint = Endpoint.create(new StockPrice());
HttpServer server = HttpServer.create(new InetSocketAddress(8080),5);
server.setExecutor(Executors.newFixedThreadPool(5));
HttpContext context = server.createContext("/quote");
endpoint.publish(context);
server.start();
}
我是从“ Metro入门”教程中获得的:https://javaee.github.io/metro/doc/getting-started/getting-started.html#basma-building
具体来说,我必须下载“ From-Java示例”代码库,其中包括将其作为部署端点的“可选”替代方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。