users@jax-rpc.java.net

Re: HTTP transport error: java.net.UnknownHostException

From: kathy walsh <Kathleen.Walsh_at_Sun.COM>
Date: Fri, 01 Oct 2004 15:01:11 -0400

Bryan-
That's what I suspect-
That's why I suggested trying this with the jwsdp1.4
k

Potter, Brian L wrote:

> come to think of it, it worked using jwsdp 1.3. we never deployed
> under jwsdp 1.4, although it did work on my dev machines. so maybe
> it's a j2ee problem?
>
> -----Original Message-----
> From: kathy walsh [mailto:Kathleen.Walsh_at_Sun.COM]
> Sent: Friday, October 01, 2004 1:17 PM
> To: users_at_jax-rpc.dev.java.net
> Subject: Re: HTTP transport error: java.net.UnknownHostException
>
> Brian-
> what I mean is jaxrpc that ships with the jwsdp1.4-
> thanks,
> Kathy
>
> Potter, Brian L wrote:
>
>> thanks for the quick reply. by standalone jaxrpc, do you mean
>> the dynamicproxy and helloservice examples? that's a good idea,
>> i'll try them on his machine.
>>
>> here's my client code (it's based on j2ee tutorial dynamicproxy
>> example):
>>
>> package procnetService;
>>
>> import java.net.URL;
>> import javax.xml.rpc.Service;
>> import javax.xml.rpc.JAXRPCException;
>> import javax.xml.namespace.QName;
>> import javax.xml.rpc.ServiceFactory;
>> import com.edms.utils.*;
>>
>> public class ProcnetClient {
>>
>> public static void main (String args[]) {
>> try {
>> String nameSpaceUri = "urn:EDIS";
>> String serviceName = "ProcnetService";
>> String portName = "ProcnetServiceIFPort";
>>
>> String adminDir = GenString.appendSlash (args[0]);
>> String pron = args[1];
>> String version = args[2];
>> String open = args[3];
>> String close = args[4];
>> String loginRequired = args[5];
>>
>> String username = GenConfig.getConfigParam (adminDir,
>> "ProcnetUsername");
>> String password = GenConfig.getConfigParam (adminDir,
>> "ProcnetPassword");
>>
>> String keyStore = GenConfig.getConfigParam (adminDir, "keyStore");
>> String keyStorePassword = GenConfig.getConfigParam (adminDir,
>> "keyStorePassword");
>> String trustStore = GenConfig.getConfigParam (adminDir,
>> "trustStore");
>> String trustStorePassword = GenConfig.getConfigParam
>> (adminDir, "trustStorePassword");
>>
>> System.setProperty("javax.net.ssl.keyStore", keyStore);
>> System.setProperty("javax.net.ssl.keyStorePassword",
>> keyStorePassword);
>> System.setProperty("javax.net.ssl.trustStore", trustStore);
>> System.setProperty("javax.net.ssl.trustStorePassword",
>> trustStorePassword);
>>
>> SocketConfig socketConfig = new SocketConfig (adminDir);
>> if (socketConfig.getConfig ("ProcnetService") < 0) {
>> System.out.println (socketConfig.results);
>> System.exit (-1);
>> }
>> StringBuffer url = new StringBuffer ("http");
>> if (socketConfig.flag) url.append ("s");
>> url.append ("://");
>> url.append (socketConfig.server);
>> url.append (":");
>> url.append (socketConfig.port);
>> url.append ("/procnetService/procnetService?WSDL");
>>
>> URL loginWsdlUrl = new URL (url.toString());
>> ServiceFactory serviceFactory = ServiceFactory.newInstance();
>> Service procnetService =
>> serviceFactory.createService(loginWsdlUrl, new
>> QName(nameSpaceUri, serviceName));
>> ProcnetServiceIF procnetServiceIF = (ProcnetServiceIF)
>> procnetService.getPort(new QName(nameSpaceUri, portName),
>> ProcnetServiceIF.class);
>>
>> JaxRpcResult result = procnetServiceIF.publish (pron, version,
>> open, close, loginRequired, username, password);
>> System.out.println (result.text);
>> if (result.status < 0) System.exit (-1);
>> } catch (Exception e) {
>> System.out.println ("ProcnetClient exception: " + e.getMessage());
>> System.exit (-1);
>> }
>> System.exit (0);
>> }
>>
>> }
>>
>> here's my IF (it's based on j2ee tutorial helloservice example):
>>
>> package procnetService;
>>
>> import java.util.*;
>> import java.rmi.Remote;
>> import java.rmi.RemoteException;
>> import com.edms.utils.*;
>>
>> /*
>> Two things make this work:
>>
>> 1 - add \EdisDev\Generic;\EdisDev\EdisJSP\web-inf\classes to the
>> system classpath
>> 2 - edit C:\j2eetutorial14\examples\jaxrpc\common\targets.xml and
>> add /EdisDev/Generic to the generate-wsdl target's classpath
>> */
>>
>> public interface ProcnetServiceIF extends Remote {
>> public JaxRpcResult publish (String pron, String version, String
>> open, String close, String loginRequired,
>> String username, String password) throws RemoteException;
>> }
>> and here's Impl:
>>
>> package procnetService;
>>
>> import java.util.*;
>> import java.text.SimpleDateFormat;
>> import com.edms.utils.*;
>> import com.edis.utils.*;
>>
>> public class ProcnetServiceImpl implements ProcnetServiceIF {
>>
>> private String adminDir, tempDir = "/Temp";
>>
>> public ProcnetServiceImpl() {
>> adminDir = GenConfig.getAdminDir ("c:/", "procnetService");
>> String str = GenConfig.getConfigParam (adminDir, "TempDirectory");
>> if (str != null) tempDir = GenString.appendSlash (str);
>> }
>>
>> public static void main (String args[]) {
>> ProcnetServiceImpl procnetServiceImpl = new ProcnetServiceImpl();
>> // procnetServiceImpl.publish ("ABCDEF", "5", "blpotter",
>> "aub617");
>> }
>>
>> public JaxRpcResult publish (String pron, String version, String
>> open, String close, String loginRequired,
>> String username, String password) {
>> System.out.println ("ProcnetServer.publish: PRON - " + pron +
>> ", Version - " + version);
>>
>> CdArchive cdArchive = new CdArchive (adminDir, tempDir);
>> EdisJdbc edisJdbc = new EdisJdbc (adminDir, tempDir);
>> EdisUser edisUser = new EdisUser (adminDir);
>> if (edisUser.edisLogin (username, password) != 0)
>> return new JaxRpcResult (-1, edisUser.results);
>>
>> int status = cdArchive.toProcnet (pron, version, open, close,
>> loginRequired, edisJdbc, edisUser);
>>
>> return new JaxRpcResult (status, cdArchive.results);
>> }
>>
>> }
>>
>>
>> -----Original Message-----
>> From: kathy walsh [mailto:Kathleen.Walsh_at_Sun.COM]
>> Sent: Friday, October 01, 2004 12:48 PM
>> To: users_at_jax-rpc.dev.java.net
>> Subject: Re: HTTP transport error: java.net.UnknownHostException
>>
>> Brian-
>> do you note this problem using standalone jaxrpc?
>> I will look into this and let you know what I find-
>> It would be helpful if you could send me the clients dynamic
>> proxy
>> example so that I can check for any problem I might see-
>> Thanks,
>> Kathy
>>
>> Potter, Brian L wrote:
>>
>>> i've used J2EE 1.4 sdk to write a JAXRPC web service based
>>> on the dynamicproxy example in the J2EE 1.4 tutorial. it
>>> works great on my development machines, but when my customer
>>> deploys the service and makes a request, the client crashes
>>> with:
>>>
>>> HTTP transport error: java.net.UnknownHostException: JohnDoe
>>> at
>>> com.sun.xml.rpc.client.http.HttpClientTransport.invoke(HttpClientTransport.java:101)
>>> at
>>> com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:69)
>>> at
>>> com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java:61)
>>> at
>>> com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:446)
>>> at
>>> com.sun.xml.rpc.client.dii.CallInvocationHandler.doCall(CallInvocationHandler.java:99)
>>> at
>>> com.sun.xml.rpc.client.dii.CallInvocationHandler.invoke(CallInvocationHandler.java:71)
>>> at $Proxy0.login(Unknown Source)
>>> apparently the request is sent using the hostname (JohnDoe)
>>> instead of the IP address (which is what i used in the WSDL
>>> URL when i created the proxy). the client can ping the
>>> server using the IP address, but not using JohnDoe (for some
>>> network configuration reason i'm not entirely clear on).
>>>
>>> my question is: why is the request sent to the server by
>>> hostname instead of IP address?
>>>
>>> i found this after doing a google search on my error at
>>> http://java.sun.com/j2se/1.3/docs/guide/rmi/faq.html#netcontact:
>>>
>>> If your RMI application throws an UnknownHostException, you
>>> can look at the resulting stack trace to see if the hostname
>>> that the client is using to contact its remote server is
>>> incorrect or not fully-qualified. If necessary, you can set
>>> the java.rmi.server.hostname property on the server to the
>>> correct IP address or hostname of the server machine and RMI
>>> will use this property's value to generate remote references
>>> to the server.
>>>
>>> but i don't know where i can set the hostname property in my
>>> server code, since it's not executed until after the request
>>> is made.
>>>
>>> btw, my development machines are running windows XP and NT,
>>> my customer is strictly NT.
>>>
>>> Brian L. Potter
>>> Software Scientist
>>> Solutions Group
>>> Intergraph Corporation (NASDAQ:INGR)
>>> 170 Graphics Drive, Madison, AL 35758
>>> P 1.256.730.8219 F 1.256.730.7514
>>> brian.potter_at_intergraph.com
>>> <mailto:brian.potter_at_intergraph.com>, www.intergraph.com
>>>
>>>
>>