2016-01-13 72 views
0

我已经迁移从WebSphere服务器到Tomcat的应用程序。但是现在我发现了访问wsdl文件的问题。该文件位于正确的文件夹中,但我无法在代码中访问它,即使它在websphere中工作。迁移到tomcat后需要更改什么?广东话访问wsdl文件到Tomcat

的Java类:

// 
// Generated By:JAX-WS RI IBM 2.1.1 in JDK 6 (JAXB RI IBM JAXB 2.1.3 in JDK 1.6) 
// 

package iseries.wsbeans.bit05; 

import java.net.MalformedURLException; 
import java.net.URL; 

import javax.xml.namespace.QName; 
import javax.xml.ws.Service; 
import javax.xml.ws.WebEndpoint; 
import javax.xml.ws.WebServiceClient; 
import javax.xml.ws.WebServiceFeature; 

@WebServiceClient(name = "BIT05", targetNamespace = "http://bit05.wsbeans.iseries", wsdlLocation = "WEB-INF/wsdl/BIT05.wsdl") 
public class BIT05 
    extends Service 
{ 

    private final static URL BIT05_WSDL_LOCATION; 

    static { 
     URL url = null; 

     try { 
      url = new URL("file:./WEB-INF/wsdl/BIT05.wsdl"); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 

     BIT05_WSDL_LOCATION = url; 
    } 

    public BIT05(URL wsdlLocation, QName serviceName) { 
     super(wsdlLocation, serviceName); 
    } 

    public BIT05() { 
     super(BIT05_WSDL_LOCATION, new QName("http://bit05.wsbeans.iseries", "BIT05")); 
    } 

登录:

javax.xml.ws.WebServiceException: Failed to access the WSDL at: file:./WEB-INF/wsdl/BIT05.wsdl. It failed with: 
    Got .\WEB-INF\wsdl\BIT05.wsdl (The system cannot find the path specified) while opening stream from file:./WEB-INF/wsdl/BIT05.wsdl. 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(Unknown Source) 

任何想法?

谢谢

回答

1

相反的:

url = new URL("file:./WEB-INF/wsdl/BIT05.wsdl"); 

尝试用:

url = BIT05.class.getClassLoader().getResource("wsdl/BIT05.wsdl"); 

它总是更好地使用类加载器或ServletContext如果当文件在任何,而不是直接对文件系统的类路径。

+1

我设法使用该解决方案的另一种变体。以防万一有人遇到同样的问题。我将其改为:URL = iseries.wsbeans.bit05.BIT05.class.getResource( “BIT05.wsdl”); (不能使用“这个”静)并放置在BIT05.wsdl文件相同的文件夹中的Java类。它似乎不可能访问另一个文件夹中的文件。无论如何,这个解决方案工作,所以,谢谢你,我会标记为正确的:) –

+0

对,我完全忘了你是在静态块。我会更新我的答案,以提高您评论的可见度。 –