gpt4 book ai didi

java - 从普通 POJO 自动创建 Java Web 服务

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

我想要实现的目标非常简单(至少我这么认为)。

我有一个普通的java类,其中包含一个方法doAction(SomeObject obj)。我想将其公开为 CXF Web 服务及其 WSDL。在这种情况下,将遵循自下而上的方法。

现在,对于一两个类,我可能会使用 Eclipse 的 Web 服务创建向导。但假设我有 30-35 个这样的案例,我希望使该过程自动化。

关于如何去做有什么想法吗?

添加有关目标的更多信息:

假设我有一个界面,

public interface IProcessService {

public SomeObject doAction (SomeObject input) throws Exception;

}

我有它的具体实现

@Service
@ManagedResource
public class ProcessServiceImpl implements IProcessService {

public SomeObject doAction(SomeObject input) throws Exception{
//doSomething
}
}

现在我可能可以解析接口(interface)或具体服务以生成以下要公开的服务接口(interface):

@WebService (targetnamespace="...", name="...", portname="...", serviceName="...")
public interface IExposedService{

@WebResult(name="output", targetnamespace="...")
@RequestWrapper(...)
@ResponseWrapper(...)
@WebMethod(action="...")
public SomeObject doAction( @WebParam(name="input") Someobject input) throws Exception;

}

我的目标是务实地生成最后一个界面。

最佳答案

您可以使用 jdk-tool wsgen 。它要求您的 Webservice 类具有注释 @WebService。

示例:

服务:

package org.wstest;
import javax.jws.WebService;
@WebService
public class WsTest {
public String doAction(MyObject o){
String result = o.getText() + " - " + o.getNumber();
return result;
}
}

对象

package org.wstest;
import java.io.Serializable;
public class MyObject implements Serializable{
private static final long serialVersionUID = 806129776947567877L;
private String text;
private int number;
public MyObject() {
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}

Wsgen 通话:(假设当前文件夹包含类(文件夹 org 和带有 .class 文件的子目录)和文件夹 out)

wsgen.exe -wsdl -d out -cp . org.wstest.WsTest

这将创建几个文件,包括一个 wsdl.txt 文件。不过,我没有基础设施来测试生成的 wsdl。

然后您可以编写一个批处理脚本来为所有类生成 wsdls。

关于java - 从普通 POJO 自动创建 Java Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33892559/

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