使用 Apt 的 Java Web 服务。我需要注释处理器吗?怎么了?

标签 java web-services annotations apt

我一直在尝试做一个简单的网络服务,一直在关注 this tutorial .不幸的是我被困住了。这是我到目前为止所做的:

1) 我创建了这个类:

package server;

import javax.jws.WebService;

@WebService
public class HelloImpl {

  /**
   * @param name
   * @return Say hello to the person.
   */
   public String sayHello(String name) {
     return "Hello, " + name + "!";
   }
}

2)我跑了:

apt HelloImpl.java

3) 我收到这个警告:

hostName[username:~/Desktop/webtest][534]% apt HelloImpl.java
warning: Annotation types without processors: [javax.xml.bind.annotation.XmlRootElement, javax.xml.bind.annotation.XmlAccessorType, javax.xml.bind.annotation.XmlType, javax.xml.bind.annotation.XmlElement]
1 warning

apt 命令应该(根据教程)生成这些文件:

HelloServiceImpl.wsdl
schema1.xsd
classes/server/HelloImpl.class
classes/server/jaxrpc/SayHello.class
classes/server/jaxrpc/SayHelloResponse.class
classes/server/jaxrpc/SayHello.java
classes/server/jaxrpc/SayHelloResponse.java

这是我调用 apt 时生成的:

HelloImpl.java (not generated but it is still in the directory)
HelloImpl.class
server/jaxws/SayHello.cass
server/jaxws/SayHell.java
server/jaxws/SayHelloResponse.class
server/jaxws/SayHelloResponse.java

(缺少:)

HelloServiceImpl.wsdl
schema1.xsd

(路径也略有不同)

我怀疑正在生成警告并且没有生成其他文件,因为我有“没有处理器的注释类型:”。

我认为警告表明它需要一个注解工厂(处理器)。我知道您可以通过以下方式指定工厂:

在此处输入代码 -cp 指定在何处查找用户类文件和注解处理器工厂

我只是不确定要指定哪个工厂。 (或者我可能需要进行不同的配置)。

最佳答案

那个 5 年前的教程可能有点过时了。 jax-ws是 jax-rpc 的继承者。不过,也许您只需要运行 wsgen工具而不是 apt。

在此处查看迷你教程 In-process SOAP service server for Java

关于使用 Apt 的 Java Web 服务。我需要注释处理器吗?怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2120045/

相关文章:

web-services - Grails 异常 : Mapping qname not fond for the package: grails. 验证

python - 如何在Docker中运行两个python应用程序

android - 在 Retrofit 中创建动态对象请求

java - 为什么Android下的注解会出现这样的性能问题(慢)?

java - 使用 javax.validation 注解将空字符串转换为 null

amazon-web-services - spring 数据流 : IAM role assignment to pods using pod-annotations

Java 虚函数调用

带有 MS Exchange : No authentication mechansims supported by both server and client 的 JavaMail

java - Hazelcast 和 MapDB——实现一个简单的分布式数据库

java - 使用 Java keytool import 指定 keystore 名称和别名有什么意义?