Mkyong-中文博客翻译-十一-
Mkyong 中文博客翻译(十一)
原文:Mkyong
找不到包装类 package.jaxws.methodName。你有没有倾向于生成它们?
问题
在 JAX-WS 开发中,当部署以下服务端点时,
文件:HelloWorld.java
package com.mkyong.ws;
//Service Endpoint Interface
@WebService
public interface HelloWorld{
@WebMethod String getHelloWorldAsString();
}
文件:HelloWorldImpl.java
//Service Implementation
package com.mkyong.ws;
@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld{
@Override
public String getHelloWorldAsString() {
//...
}
}
它会立即显示以下错误信息?
Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException:
runtime modeler error:
Wrapper class com.mkyong.ws.jaxws.GetHelloWorldAsString is not found.
Have you run APT to generate them?
at com.sun.xml.internal.ws.model.RuntimeModeler.getClass(RuntimeModeler.java:256)
//...
解决办法
服务端点接口没有用任何@SOAPBinding
进行注释,因此,它使用默认的文档样式来发布它。为了便于阅读,您可以将其重写如下:
//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.DOCUMENT, use=Use.LITERAL)
public interface HelloWorld{
@WebMethod String getHelloWorldAsString();
}
在文档风格中,您需要使用" wsgen "工具来为服务发布生成所有必要的 JAX-WS 可移植工件(映射类、wsdl 或 xsd 模式)。
wsgen 命令
读取服务端点实现类需要使用 wsgen 命令:
wsgen -keep -cp . com.mkyong.ws.HelloWorldImpl
它在 package.jaxws 文件夹下为单个getHelloWorldAsString()
方法生成两个类。
- gethelloworldasstring.java
- gethelloworlandstrings response . Java
将这些类复制到正确的文件夹中,在本例中是" com.mkyong.ws.jaxws "。请尝试再次发布它。
参考
为了使用 JSP,您的项目必须配置为使用 JDK
问题
使用 Eclipse 3.7+Google Plugin for Eclipse 来开发 GAE 项目,当在“war”目录下创建一个. jsp 文件时,Eclipse 在 JSP 文件上方显示一个交叉错误图标。
在 Eclipse problem 视图中,它显示"为了使用 JSP,您项目必须被配置为使用 JDK。”。
解决办法
要解决这个问题,改变你的 Eclipse 安装的 JRE,并把它指向你的 JDK 文件夹。在 Eclipse 菜单中,选择 Windows - > 首选项 - > Java - > 已安装 JREs ,添加您的 JDK 文件夹并选中它。
P.S JSP 需要 JDK“javac”来编译,而 JRE 中并不存在。
## 参考