jbuilder9上通过ssl调用远程weblogic8.1上发布的webservice出错,求教
weblogic8.1运行在局域网的另一台机器上,本机jbuilder编写客户端程序访问发布在远程weblogic上的webservice。
ssl已经调试通过,能通过https://myhost:7002看到页面内容,且不用ssl该webservice能运行通过,但一旦采用了ssl,客户端jb9就会报如下错误:
C:\JBuilder9\jdk1.4\bin\javaw -classpath "P:\_my\project\classes;D:\Library\webserviceclient+ssl.jar;D:\Library\classes12.jar;C:\JBuilder9\thirdparty\jakarta-tomcat-4.1.24-LE-jdk14\common\lib\servlet.jar;C:\JBuilder9\thirdparty\junit3.8\junit.jar;C:\JBuilder9\lib\unittest.jar;D:\Library\log4j-1.2.5.jar;C:\JBuilder9\lib\xercesImpl.jar;C:\JBuilder9\lib\xmlParserAPIs.jar;C:\JBuilder9\lib\saaj.jar;C:\JBuilder9\lib\jaxrpc.jar;C:\JBuilder9\lib\axis.jar;C:\JBuilder9\lib\wsdl4j.jar;C:\JBuilder9\lib\log4j-1.2.8.jar;C:\JBuilder9\lib\commons-logging.jar;C:\JBuilder9\lib\commons-discovery.jar;C:\JBuilder9\lib\activation.jar;C:\JBuilder9\lib\mail.jar;D:\Library\hibernate\hibernate2106-patched.jar;D:\Library\hibernate\hibernate216-cglib-full-2.0.2.jar;D:\Library\hibernate\hibernate216-commons-collections-2.1.1.jar;D:\Library\hibernate\hibernate216-commons-lang-1.0.1.jar;D:\Library\hibernate\hibernate216-dom4j-1.4.jar;D:\Library\hibernate\hibernate216-ehcache-0.9.jar;D:\Library\hibernate\hibernate216-odmg-3.0.jar;C:\JBuilder9\jdk1.4\demo\jfc\Java2D\Java2Demo.jar;C:\JBuilder9\jdk1.4\demo\plugin\jfc\Java2D\Java2Demo.jar;C:\JBuilder9\jdk1.4\jre\lib\charsets.jar;C:\JBuilder9\jdk1.4\jre\lib\ext\dnsns.jar;C:\JBuilder9\jdk1.4\jre\lib\ext\ldapsec.jar;C:\JBuilder9\jdk1.4\jre\lib\ext\localedata.jar;C:\JBuilder9\jdk1.4\jre\lib\ext\sunjce_provider.jar;C:\JBuilder9\jdk1.4\jre\lib\im\indicim.jar;C:\JBuilder9\jdk1.4\jre\lib\jaws.jar;C:\JBuilder9\jdk1.4\jre\lib\jce.jar;C:\JBuilder9\jdk1.4\jre\lib\jsse.jar;C:\JBuilder9\jdk1.4\jre\lib\rt.jar;C:\JBuilder9\jdk1.4\jre\lib\sunrsasign.jar;C:\JBuilder9\jdk1.4\lib\dt.jar;C:\JBuilder9\jdk1.4\lib\htmlconverter.jar;C:\JBuilder9\jdk1.4\lib\tools.jar" my.test.webservice.WSTestCaller
file:/D:/Library/webserviceclient+ssl.jar!/weblogic/webservice/core/ClientDispatcher.class
javax.xml.rpc.soap.SOAPFaultException: Exception during processing: java.lang.RuntimeException: Missing license file for: WebLogic Platform 8.1 (see Fault Detail for stacktrace)
at weblogic.webservice.core.ClientDispatcher.receive(ClientDispatcher.java:313)
at weblogic.webservice.core.ClientDispatcher.dispatch(ClientDispatcher.java:144)
at weblogic.webservice.core.DefaultOperation.invoke(DefaultOperation.java:457)
at weblogic.webservice.core.DefaultOperation.invoke(DefaultOperation.java:443)
at weblogic.webservice.core.rpc.CallImpl.invoke(CallImpl.java:558)
at weblogic.webservice.core.rpc.CallImpl.invoke(CallImpl.java:411)
at my.test.webservice.WSTestCaller.TestWS2(WSTestCaller.java:106)
at my.test.webservice.WSTestCaller.main(WSTestCaller.java:127)
Exception in thread "main"
难道非weblogic server端调用ssl通道的weblogic发布的webservice,也需要license么?
请高手帮忙,谢谢
//============================================
webservice java代码如下
package my.test.webservice;
public class WSTest {
public WSTest() {
}
public String test(String s) {
System.out.println("s=" + s);
return "get_" + s;
}
}
//============================================
war的WEB-INF/web-service.xml代码如下:
<web-services>
<web-service name="InspectServices" targetNamespace="my_webservice_target" uri="/wstest">
<components>
<java-class name="TestWebService1" class-name="my.test.webservice.WSTest"/>
</components>
<operations xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<operation method="test" component="TestWebService1">
<params>
<param name="s" style="in" type="xsd:string"/>
<return-param name="result" class-name="java.lang.String" type="xsd:string" />
</params>
</operation>
</operations>
</web-service>
</web-services>
//============================================
客户端调用代码如下:(使用的runtime-client-jar是wl_home/server/lib/webserviceclient+ssl.jar)
package my.test.webservice;
import java.io.InputStream;
import java.io.IOException;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.Service;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.namespace.QName;
import java.rmi.*;
import javax.xml.rpc.*;
public class WSTestCaller {
public WSTestCaller() {
}
public void init() {
System.setProperty("javax.net.ssl.keyStore", "D:\\ca_root\\jc\\java_client_keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "12345678");
System.setProperty("javax.net.ssl.trustStore", "D:\\ca_root\\jc\\java_client_keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "12345678");
System.setProperty("javax.net.debug", "ssl");
System.setProperty("https.protocols", "TLSv1");
// use Sun's reference implementation of a URL handler for the "https" URL protocol type.
//System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
System.setProperty("java.protocol.handler.pkgs","javax.net.ssl");
// dynamically register sun's ssl provider
//Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
}
public String testHTTPS() {
System.out.println("Begin HTTPSURL Test......");
try {
HttpsURLConnection myConnection = (HttpsURLConnection) new URL("https://my_host:7002/test/test.htm").openConnection();
myConnection.connect();
InputStream myInputStream = myConnection.getInputStream();
byte[] content = wfc.service.util.StreamHelper.toByteArray(myInputStream);
myInputStream.close();
String s = new String(content);
return s;
}
catch (IOException ex) {
ex.printStackTrace();
return null;
}
}
public String TestWS2() {
try {
// Setup the global JAX-RPC service factory
System.setProperty("javax.xml.rpc.ServiceFactory", "weblogic.webservice.core.rpc.ServiceFactoryImpl");
// create service factory
ServiceFactory factory = ServiceFactory.newInstance();
// define qnames
String targetNamespace = "my_webservice_target";
QName serviceName = new QName(targetNamespace, "InspectServices");
QName portName = new QName(targetNamespace, "7002");
QName operationName = new QName("urn:xmethods-delayed-quotes", "test");
// create service
Service service = factory.createService(serviceName);
// create call
Call call = service.createCall();
// set port and operation name
call.setPortTypeName(portName);
call.setOperationName(operationName);
// add parameters
call.addParameter("s", new QName("http://www.w3.org/2001/XMLSchema", "string"), ParameterMode.IN);
call.setReturnType(new QName("http://www.w3.org/2001/XMLSchema", "string"));
// set end point address
call.setTargetEndpointAddress("https://my_host:7002/test/wstest");
// invoke the remote web service
String result = (String) call.invoke(new Object[] {"hello"});
return result;
}
catch (RemoteException ex) {
ex.printStackTrace();
return null;
}
catch (ServiceException ex) {
ex.printStackTrace();
return null;
}
}
public static void main(String[] args) {
WSTestCaller caller = new WSTestCaller();
caller.init();
//String hr = caller.testHTTPS();
//System.out.println("HTTPSURL page is : " + hr);
String ar2 = caller.TestWS2();
System.out.println("ws2 return value is : " + ar2);
}
}