我是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 FilesJavajdk1.7.0_05binwsgen
-cp "c:usersmicoworkspaceSOAcalcWSsrccom.calc.ws.Calculator"
-verbose
-d "C:usersmicoclasses"
我得到此错误:
Missing SEI.
是什么原因引起的?
wsgen.exe以下列方式调用:
WSGEN [options] <SEI>
它读取Web 服务端点实现 class(sei),并生成用于Web服务部署的所有必需工件,并调用。
在您发布的命令行中,我只看到选项,您指定没有SEI。从这里开始消息"丢失SEI"(即您没有提供强制性命令行参数)。
我不知道您的确切设置,但是如果我有这个结构:
c:temp
├───classpath
│ └───com
│ └───calc
│ └───ws
│ └───Calculator.class
└───generated
如果我运行(一行):
wsgen -cp c:tempclasspath
-keep
-s c:tempgenerated
com.calc.ws.Calculator
我会上课,但是如果我只运行:
wsgen -cp c:tempclasspath
-keep
-s c:tempgenerated
我会得到:
Missing SEI
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...
在我的情况下,我正在从jax-rpc迁移到jax-ws,然后更改了软件包名称。通过更改它,我将不得不更改XML文件中的所有映射,例如WebServices.xml中。一个简单的解决方案,如果您获得"缺少SEI" 错误将是找到并删除 webservices.xml
文件,并且与Jax-ws一起使用。
对于我的情况。这项工作。
- cd {project_path}/bin
- " c: program文件 java jdk1.7.0_05 bin wsgen" -cp。com.calc.ws.calculator - 静脉 -d" c: users mico class "
- 完成。