有没有人知道一个可以反编译整个Jar文件而不是单个类的免费反编译器?我有一个子类的问题,如名称$ 1.class name $ 2.class name.class
当我使用来自CXF的wsdl2java(生成类似于wsimport的东西)生成一个webservice客户端时,通过maven,我的服务从这样的代码开始:
@WebServiceClient(name = "StatusManagement",
wsdlLocation = "c:/some_absolute_path_to_a_wsdl_file.wsdl",
targetNamespace = "http://tempuri.org/")
public class StatusManagement extends Service {
public final static URL WSDL_LOCATION;
public final static QName SERVICE = new QName("http://tempuri.org/", "StatusManagement");
public final static QName WSHttpBindingIStatus = new QName("http://tempuri.org/", "WSHttpBinding_IStatus");
static {
URL url = null;
try {
url = new URL("c:/some_absolute_path_to_a_wsdl_file.wsdl");
} catch (MalformedURLException e) {
System.err.println("Can not initialize the default wsdl from c:/some_absolute_path_to_a_wsdl_file.wsdl");
// e.printStackTrace();
}
WSDL_LOCATION = url;
}
Run Code Online (Sandbox Code Playgroud)
硬编码的绝对路径真的很糟糕.生成的类不能在除我之外的任何其他计算机上工作.
第一个想法是将WSDL文件(以及它导入的所有内容,其他WSDL和XSD)放在jar文件和类路径中.但我们想避免这种情况.由于所有这些都是由基于WSDL和XSD的CXF和JAXB生成的,因此我们认为在运行时需要知道WSDL没有意义.
wsdlLocation属性旨在覆盖WSDL位置(至少这是我在某处获得的),默认值为"".由于我们使用maven,我们尝试<wsdlLocation></wsdlLocation>
在CXF的配置中包含以尝试强制源生成器将wsdlLocation留空.但是,这只是使它忽略XML标记,因为它是空的.我们做了一个非常难看的可耻黑客,使用<wsdlLocation>" + "</wsdlLocation>
. …
我正在尝试在java中使用web服务,使用wsdl文件生成的客户端和wsdl2java.
我正在使用Eclipse版本的Helios和jdk 1.6.0_20,并且我使用wsld2java生成了.class文件,其中包含以下选项:
"-dc:\ WebServices\Generated -client -verbose -compile -autoNameResolution -p org.dwservice -sn DWService -wsdlLocation /WEB-INF/wsdl/DWService.wsdl c:\ WebServices\DWService.wsdl"
我将生成的文件打包成.jar并将其添加到我编译好的项目中.但是当我尝试使用webservice时,我得到了例外:
javax.xml.ws.WebServiceException: Port {http://tempuri.org/}WSHttpBinding_IDWService not found.
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:311)
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:302)
at javax.xml.ws.Service.getPort(Service.java:92)
at org.dwservice.DWService.getWSHttpBindingIDWService(DWService.java:63)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import org.dwservice.*;
...
private DWService dwService = new DWService();
private IDWService iDWService = ***dwService.getWSHttpBindingIDWService()***;
Run Code Online (Sandbox Code Playgroud)
任何想法都将非常感激.
我想使用SOAP服务但是离线提供给我的WSDL,从而导致客户端使用WSDL的本地路径生成.
public class SoSo extends Service {
public final static URL WSDL_LOCATION;
public final static QName SERVICE = new QName("http://tempuri.org/", "SoSo");
public final static QName SoSoSoap12 = new QName("http://tempuri.org/", "SoSoSoap12");
public final static QName SoSoSoap = new QName("http://tempuri.org/", "SoSoSoap");
static {
URL url = null;
try {
url = new URL("file:/c:/Dev/Java/workspace/service-individualreport/src/main/resources/wsdl/SoSo.wsdl");
} catch (MalformedURLException e) {
java.util.logging.Logger.getLogger(SoSo.class.getName())
.log(java.util.logging.Level.INFO,
"Can not initialize the default wsdl from {0}", "file:/c:/Dev/Java/workspace/service-individualreport/src/main/resources/wsdl/SoSo.wsdl");
}
WSDL_LOCATION = url;
}
Run Code Online (Sandbox Code Playgroud)
从我的角度来看,我想只构建一次WSDL,然后指定服务的位置.