我是Web服务开发的初学者。我想使用wsgen.exe生成工件。
这是我的代码:
package com.calc.ws;
import javax.jws.WebService;
@WebService
public class Calculator {
public int add(int a, int b) {
return (a + b);
}
public int sub(int a, int b) {
return (a - b);
}
}
我遇到的问题是当我想使用此命令从命令行生成工件时(一个衬垫):
C:\Program Files\Java\jdk1.7.0_05\bin\wsgen
-cp "c:\users\mico\workspaceSOA\calcWS\src\com.calc.ws.Calculator"
-verbose
-d "C:\users\mico\classes\"
我收到此错误:
Missing SEI.
造成这种情况的原因是什么?
答案 0 :(得分:4)
以下列方式调用Wsgen.exe:
WSGEN [options] <SEI>
它reads a web service endpoint implementation class (SEI)并为Web服务部署和调用生成所有必需的工件。
在您发布的命令行中我只看到选项,您没有指定SEI。从这里得到消息“Missing SEI”(即你没有提供强制命令行参数)。
我不知道你的确切设置,但如果我有这个结构:
c:\temp
├───classpath
│ └───com
│ └───calc
│ └───ws
│ └───Calculator.class
└───generated
如果我跑(在一条线上):
wsgen -cp c:\temp\classpath
-keep
-s c:\temp\generated
com.calc.ws.Calculator
我会得到我的课程,但如果我只是运行:
wsgen -cp c:\temp\classpath
-keep
-s c:\temp\generated
我会得到:
Missing SEI
答案 1 :(得分:1)
The error "Missing SEI" means Service Endpoint Interface is missing. Please create an interface for your service. please refer below code:
Service Interface:
package com;
import javax.jws.WebService;
@WebService
public interface Calculator {
public int add(int a, int b);
public int sub(int a, int b);
}
Service Class implementing Service Interface:
package com;
import javax.jws.WebService;
@WebService
public class CalculatorImpl implements Calculator {
public int add(int a, int b) {
return (a + b);
}
public int sub(int a, int b) {
return (a - b);
}
}
Command which i have used is:
>wsgen -cp . com.CalculatorImpl -keep -verbose -d ./stub
Before executing above please make sure that destination folder stub is already created.
Please try and let me know if still you are facing issue in this...
答案 2 :(得分:0)
在我的情况下,我正在从JAX-RPC迁移到JAX-WS,并且我更改了包名称。通过更改它,我将不得不更改xml文件中的所有映射,例如在webservices.xml中。如果您收到“缺少SEI”错误,那么一个简单的解决方案就是查找并删除 webservices.xml
文件,您最好使用JAX-WS
答案 3 :(得分:0)
对于我来说。这项工作。