HTTP-Tunneling through Apache Plug-in
Hello,
has anybody experience with HTTP-Tunneling of requests to a WLS
4.5.1SP13 through an Apache-Webserver?
I'm not able to configure the apache plug-in from weblogic to act as a
reverse proxy for requests coming from a
Java Client Application.
Any Hints available?
Remo
"Jong Lee" <[email protected]> wrote in message
news:3a4a9efa$[email protected]..
>
Remo Schnidrig <[email protected]> wrote:
Hello Jong,
HTTP tunneling will append ".tun" to your request.
For apache, you can use "MatchExpression" to proxy the mime type.
i.e: add the following line to your httpd.conf
MatchExpression *.tunThat is functioning. Thank you very much.
Another question:
What about HTTPS-Tunneling through an Apache-Server?
How can I get everything through?
Thank you
Remo
We don't support https from the bridge to the server yet.
JongWhat about using HTTPS-Tunneling between our Java client and the WLS
Stronghold plug-in and HTTP-Tunneling between the plug-in and the WLS?
If this is possible, how do I have to setup the stronghold?
Remo
Similar Messages
-
Dont think RMi is HTTP tunneling through proxy firewall
Hi Guys,
Does anyone know how to monitor if RMI is using the option toHTTP tunnel through a proxy ???
Many of clients sit behind firewalls/proxies that enable HTTP only. I thought RMI would, as a default, use HTTP tunneling POST, RESPONSe methods to get through, but it does not.
Would that case be insted of using Naming.lokup("RMIServer"); that i should use
Registry reg = LocateRegistry.getResgistry(serverAddress, serverPort);
reg.lookup("RMIServer");
Any help would be greatly appreciated.RMI doesn't have an option like that. Sockets do, and you get it for any socket including RMI by setting socksProxyHost and socksProxyPort.
The RMI HTTP tunnelling thing happens when there is an HTTP server at the server side. which redirects the request to an RMI server via rmi-cgi.cgi or the RMI servlet. It's automatic, as a fallback, and you can enforce its use via a system property which you can find in the Javadoc Guide to Features/Remote Method Invocation/Useful java.rmi system properties. -
Here is example code for HTTPS Tunneling through proxy(400 Lines of code
Here is the source for Https Tunneling that I have gotten working. It is based on Pua Yeow Cheong's JavaWorld Tip 111. Thanks to David Lord for providing the final breakthrough that I needed.
I have posted it here for anyone who wishes to use it. If you find any bugs, or write any improvements, please tack them onto the end of this thread.
I have been trying to tackle this problem for quite some time, so I hope this helps a few of you out there.
Lots of Luck,
nightmask.
<----- Begin Copy and Paste -------->
import java.net.*;
import java.io.*;
import java.security.*;
import sun.misc.BASE64Encoder;
import javax.net.*;
import javax.net.ssl.*;
* This example is based on JavaWorld Tip 111. Thanks to Pua Yeow Cheong for writing it.
* It tunnels through a proxy using the Https protocol.
* Thanks go to David Lord in the java forums for figuring out the main problem with Tip 111
* PLEASE NOTE: You need to have the JSSE 1.0.2 jars installed for this to work
* Downloads contents of a URL, using Proxy Tunneling and Basic Authentication
public class URLReader {
* The main program for the URLReader class
public static void main(String[] args) throws Exception {
//set up strings for use in app. Change these to your own settings
String proxyPassword = "password";
String proxyUsername = "username";
String proxyHost = "myproxy.com";
String proxyPort = "3128";
String connectionURL = "https://www.verisign.com";
//set up system properties to indicate we are using a proxy
System.setProperty("https.proxyHost", proxyHost);
System.setProperty("https.proxyPort", proxyPort);
System.setProperty("proxyHost", proxyHost);
System.setProperty("proxyPort", proxyPort);
System.setProperty("proxySet", "true");
System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);
System.setProperty("http.proxySet", "true");
//set up handler for jsse
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
java.security.Provider prov = new com.sun.net.ssl.internal.ssl.Provider();
Security.addProvider(prov);
//create the connection
URL myURL = new URL(connectionURL);
URLConnection myConnection = myURL.openConnection();
if (myConnection instanceof com.sun.net.ssl.HttpsURLConnection) {
((com.sun.net.ssl.HttpsURLConnection) myConnection).setSSLSocketFactory(new SSLTunnelSocketFactory(System.getProperty("proxyHost"), System.getProperty("proxyPort")));
myConnection.setDoInput(true);
myConnection.setDoOutput(true);
BufferedReader in;
try {
System.err.println("opening Input stream1");
in = new BufferedReader(
new InputStreamReader(
myConnection.getInputStream()));
String inputLine;
System.err.println("Input stream is Open1");
while ((inputLine = in.readLine()) != null) {
System.err.println(inputLine);
in.close();
System.err.println("Input stream is Closed1");
} catch (Exception e) {
e.printStackTrace(System.err);
String tmp = e.getMessage().toLowerCase().trim();
System.err.println("tmp *" + tmp + "*");
if (tmp.indexOf("http") > -1) {
//http error message to be parsed
tmp = tmp.substring(tmp.indexOf("http")).trim();
System.err.println("tmp *" + tmp + "*");
tmp = tmp.substring(8).trim();
System.err.println("tmp *" + tmp + "*");
if (tmp.startsWith("407")) {
//proxy authentication required
myURL = new URL(connectionURL);
myConnection = myURL.openConnection();
if (myConnection instanceof com.sun.net.ssl.HttpsURLConnection) {
((com.sun.net.ssl.HttpsURLConnection) myConnection).setSSLSocketFactory(new SSLTunnelSocketFactory(System.getProperty("proxyHost"), System.getProperty("proxyPort"), proxyUsername, proxyPassword));
myConnection.setDoInput(true);
myConnection.setDoOutput(true);
try {
System.err.println("opening Input stream 2");
in = new BufferedReader(
new InputStreamReader(
myConnection.getInputStream()));
String inputLine;
System.err.println("Input stream is Open 2");
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
in.close();
System.err.println("Input stream is closed 2");
} catch (Exception ex) {
System.err.println(ex.getMessage());
ex.printStackTrace(System.err);
* SSLSocket used to tunnel through a proxy
class SSLTunnelSocketFactory extends SSLSocketFactory {
private String tunnelHost;
private int tunnelPort;
private SSLSocketFactory dfactory;
private String tunnelPassword;
private String tunnelUserName;
private boolean socketConnected = false;
private int falsecount = 0;
* Constructor for the SSLTunnelSocketFactory object
*@param proxyHost The url of the proxy host
*@param proxyPort the port of the proxy
public SSLTunnelSocketFactory(String proxyHost, String proxyPort) {
System.err.println("creating Socket Factory");
tunnelHost = proxyHost;
tunnelPort = Integer.parseInt(proxyPort);
dfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
* Constructor for the SSLTunnelSocketFactory object
*@param proxyHost The url of the proxy host
*@param proxyPort the port of the proxy
*@param proxyUserName username for authenticating with the proxy
*@param proxyPassword password for authenticating with the proxy
public SSLTunnelSocketFactory(String proxyHost, String proxyPort, String proxyUserName, String proxyPassword) {
System.err.println("creating Socket Factory with password/username");
tunnelHost = proxyHost;
tunnelPort = Integer.parseInt(proxyPort);
tunnelUserName = proxyUserName;
tunnelPassword = proxyPassword;
dfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
* Sets the proxyUserName attribute of the SSLTunnelSocketFactory object
*@param proxyUserName The new proxyUserName value
public void setProxyUserName(String proxyUserName) {
tunnelUserName = proxyUserName;
* Sets the proxyPassword attribute of the SSLTunnelSocketFactory object
*@param proxyPassword The new proxyPassword value
public void setProxyPassword(String proxyPassword) {
tunnelPassword = proxyPassword;
* Gets the supportedCipherSuites attribute of the SSLTunnelSocketFactory
* object
*@return The supportedCipherSuites value
public String[] getSupportedCipherSuites() {
return dfactory.getSupportedCipherSuites();
* Gets the defaultCipherSuites attribute of the SSLTunnelSocketFactory
* object
*@return The defaultCipherSuites value
public String[] getDefaultCipherSuites() {
return dfactory.getDefaultCipherSuites();
* Gets the socketConnected attribute of the SSLTunnelSocketFactory object
*@return The socketConnected value
public synchronized boolean getSocketConnected() {
return socketConnected;
* Creates a new SSL Tunneled Socket
*@param s Ignored
*@param host destination host
*@param port destination port
*@param autoClose wether to close the socket automaticly
*@return proxy tunneled socket
*@exception IOException raised by an IO error
*@exception UnknownHostException raised when the host is unknown
public Socket createSocket(Socket s, String host, int port, boolean autoClose)
throws IOException, UnknownHostException {
Socket tunnel = new Socket(tunnelHost, tunnelPort);
doTunnelHandshake(tunnel, host, port);
SSLSocket result = (SSLSocket) dfactory.createSocket(tunnel, host, port, autoClose);
result.addHandshakeCompletedListener(
new HandshakeCompletedListener() {
public void handshakeCompleted(HandshakeCompletedEvent event) {
System.out.println("Handshake Finished!");
System.out.println("\t CipherSuite :" + event.getCipherSuite());
System.out.println("\t SessionId: " + event.getSession());
System.out.println("\t PeerHost: " + event.getSession().getPeerHost());
setSocketConnected(true);
// thanks to David Lord in the java forums for figuring out this line is the problem
// result.startHandshake(); //this line is the bug which stops Tip111 from working correctly
return result;
* Creates a new SSL Tunneled Socket
*@param host destination host
*@param port destination port
*@return tunneled SSL Socket
*@exception IOException raised by IO error
*@exception UnknownHostException raised when the host is unknown
public Socket createSocket(String host, int port)
throws IOException, UnknownHostException {
return createSocket(null, host, port, true);
* Creates a new SSL Tunneled Socket
*@param host Destination Host
*@param port Destination Port
*@param clientHost Ignored
*@param clientPort Ignored
*@return SSL Tunneled Socket
*@exception IOException Raised when IO error occurs
*@exception UnknownHostException Raised when the destination host is
* unknown
public Socket createSocket(String host, int port, InetAddress clientHost,
int clientPort)
throws IOException, UnknownHostException {
return createSocket(null, host, port, true);
* Creates a new SSL Tunneled Socket
*@param host destination host
*@param port destination port
*@return tunneled SSL Socket
*@exception IOException raised when IO error occurs
public Socket createSocket(InetAddress host, int port)
throws IOException {
return createSocket(null, host.getHostName(), port, true);
* Creates a new SSL Tunneled Socket
*@param address destination host
*@param port destination port
*@param clientAddress ignored
*@param clientPort ignored
*@return tunneled SSL Socket
*@exception IOException raised when IO exception occurs
public Socket createSocket(InetAddress address, int port,
InetAddress clientAddress, int clientPort)
throws IOException {
return createSocket(null, address.getHostName(), port, true);
* Sets the socketConnected attribute of the SSLTunnelSocketFactory object
*@param b The new socketConnected value
private synchronized void setSocketConnected(boolean b) {
socketConnected = b;
* Description of the Method
*@param tunnel tunnel socket
*@param host destination host
*@param port destination port
*@exception IOException raised when an IO error occurs
private void doTunnelHandshake(Socket tunnel, String host, int port) throws IOException {
OutputStream out = tunnel.getOutputStream();
//generate connection string
String msg = "CONNECT " + host + ":" + port + " HTTP/1.0\n"
+ "User-Agent: "
+ sun.net.www.protocol.http.HttpURLConnection.userAgent;
if (tunnelUserName != null && tunnelPassword != null) {
//add basic authentication header for the proxy
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
String encodedPassword = enc.encode((tunnelUserName + ":" + tunnelPassword).getBytes());
msg = msg + "\nProxy-Authorization: Basic " + encodedPassword;
msg = msg + "\nContent-Length: 0";
msg = msg + "\nPragma: no-cache";
msg = msg + "\r\n\r\n";
System.err.println(msg);
byte b[];
try {
//we really do want ASCII7 as the http protocol doesnt change with locale
b = msg.getBytes("ASCII7");
} catch (UnsupportedEncodingException ignored) {
//If ASCII7 isn't there, something is seriously wrong!
b = msg.getBytes();
out.write(b);
out.flush();
byte reply[] = new byte[200];
int replyLen = 0;
int newlinesSeen = 0;
boolean headerDone = false;
InputStream in = tunnel.getInputStream();
boolean error = false;
while (newlinesSeen < 2) {
int i = in.read();
if (i < 0) {
throw new IOException("Unexpected EOF from Proxy");
if (i == '\n') {
headerDone = true;
++newlinesSeen;
} else
if (i != '\r') {
newlinesSeen = 0;
if (!headerDone && replyLen < reply.length) {
reply[replyLen++] = (byte) i;
//convert byte array to string
String replyStr;
try {
replyStr = new String(reply, 0, replyLen, "ASCII7");
} catch (UnsupportedEncodingException ignored) {
replyStr = new String(reply, 0, replyLen);
//we check for connection established because our proxy returns http/1.1 instead of 1.0
if (replyStr.toLowerCase().indexOf("200 connection established") == -1) {
System.err.println(replyStr);
throw new IOException("Unable to tunnel through " + tunnelHost + ":" + tunnelPort + ". Proxy returns\"" + replyStr + "\"");
//tunneling hanshake was successful
}<----- End Copy and Paste -------->BTW, if you are using an implementation in which
the http/https implementation recognises
the java.net.Authenticator properly, you can use
that framework to do basic/digest authentication.
I think Sun's JDK 1.4 supports both basic
and digest for both proxies and the actual end
site you connect via http/https, but I haven't
tested it to be sure. I know it works
with http/basic at the end host.
Today's Ob hack:
import java.net.*;
import java.io.*;
class MyAuth extends Authenticator {
protected PasswordAuthentication getPasswordAuthentication() {
System.out.println("The realm '" + getRequestingPrompt() +
"' at '" + getRequestingHost() + ":" + getRequestingPort() +
"'\n" + "using " + getRequestingProtocol() + " is requesting " +
getRequestingScheme().toUpperCase() + " authentication.");
System.out.println("");
System.out.println("What should we send them? Let's send them ...");
System.out.println("");
return new PasswordAuthentication("username", "password".toCharArray()); }
public class MyURL {
public static void main(String[] args) throws Exception {
// set to the authenticator you want to use.
Authenticator.setDefault(new myAuth());
URL url =
new URL("http://www.some.com/something_protected/index.htm");
BufferedReader in = new BufferedReader(
new InputStreamReader(
url.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
in.close(); -
I have few EJB/JSP applications deployed on OC4J. I want to access applications
on Apache deployed on same/other machines . As this application is intended to be used by few administrators, I need to authenticate the user before access.
Is there any standard way to achieve this?
What I need to configure on OC4J/Apache.
Do I need to make any changes in the application to achieve this ?
Any thoughts
--pranayHi Pranay,
I can only suggest the following references (although I'm not sure
if they will help you).
http://www.elephantwalker.com
http://www.atlassian.com
http://www.orionserver.com
http://www.orionsupport.com
http://tahiti.oracle.com
Good Luck,
Avi. -
Weblogic 8.1 Apache Plug-In
Where can I find the plug-in for WLS 8.1/Apache 2.0/Windows 2003?
Hi Vishwas,
Thank you for the reply. I forgot to mention that Apache and WebLogic are on Solaris 9 platform.
Accesing a webapp hosted on WebLogic through Apache->plug-in->WebLogic return 500 internal server error, but other webapps hosted on the same WebLogic domain works properly. Looking at the Response Hdrs from WebLogic shows that WLS returns transfer-encoding=chunked. The other webapps which work properly has content-length set and transfer-encoding is not chunked.
So, the question is does Apache Plug-in for weblogic 8.1 SP5 read the chunked data properly?
Thanks,
Janani -
WLS 8.1 Apache Plug-in is changing HTTP status code 999 to 500
I'm seeing the weblogic server 8.1 sp4 apache plug-in change the HTTP status code of 999 (set by the application) to 500 Internal Server Error. I'm seeing this with Apache 2.0.48 on aix and with Apache 2.0.58 on windows. I've tried the plug-in from 8.1 SP2, SP4 and SP6 with all yielding the same result. I've tried the SSL plug-in too - same result. I'm told by the maker of this application that they are not seeing this issue with the plug-in for SunOne/NES. What does BEA say about the Apache plug-in changing the http status code? Why is it doing this? Why doesn't the SunOne/NES plug-in do it? Can you provide a plug-in that does not do this?
Try setting
Debug ALL
inside your IfModule. All proxy activity will be written to /tmp/wlproxy.log (on
unixes). If no info appears in the log, Apache is not invoking the plug-in properly.
HTH
"Lukas" <[email protected]> wrote:
>
I am trying to set up Apache 2.0.49 proxy plug-in for my WLS 8.1 cluster
(2 managed
servers). I followed instructions at http://edocs.bea.com/wls/docs81/plugins/apache.html.
My test web application runs on
192.168.10.142:5001/public/testwebapp
and
192.168.10.142:6001/public/testwebapp
I have tested my cluster using another instance on WLS and HttpClusterServlet
and it works fine.
I have added following section to my httpd.conf
LoadModule weblogic_module modules/mod_wl_20.so
<IfModule mod_weblogic.c>
WebLogicCluster 192.168.10.142:6001,192.168.10.142:5001
</IfModule>
<Location /public/testwebapp>
SetHandler weblogic-handler
PathTrim /public/testwebapp
ErrorPage http://myerrorpage1.mydomain.com
</Location>
I restarted my wls cluster and apache as well and when I specify http://192.168.10.142/public/testwebapp
(apache web server) I receive Error 404--Not Found (even thou I have
tested my
http://192.168.10.142:5001/public/testwebapp and http://192.168.10.142:6001/public/testwebapp
- they work correctly).
There is nothing in apache’s error_log file.
There is a record in access_log file reading:
192.168.10.126 - - [08/Jun/2004:16:23:32 -0700] "GET /public/testwebapp
HTTP/1.1"
404 1214
which gives me an impression that “proxy” – forwarding does not work.
Where should I look for some errors?
Thanks,
Lukas -
Settings to be done for Apache/Tomcat for HTTP tunneling?
What are the settings that i need to do for Apache/Tomcat to run http tunneling over rmi.
Thanks in advance.Hi thanks for reply.
i am trying to run the application which comes from sun doc(rmiservlethandler).
in one article i have found that we have to set up the Apache/Tomcat in order to rewrite the rmi-cgi call to the servlet.
i am not able to make run rmiservlethandler app. any tips for this app to run on Apache/Tomcat. -
Error initializing HTTP tunnel connection
Hi ,
I too got the same error like,
java.io.IOException: Error initializing HTTP tunnel connection:
HTTP/1.0 404 Not Found
Server: servletrunner/2.0
Content-Type: text/html
Content-Length: 95
Date: Wed, 03 Jan 2007 14:59:05 GMT
Here I used J2ME as client application, through servlet runner I am tring to connect to server program. Initially Its worked fine.. But I changed some interner explorer settings. then I got this error. When I changed those setttings to normal also I am not able to connect to the server. Even I reinstall the whole softwares. But the problem is still there.
So could any one help me to resolve the problem.
Its very Urgent project. Its completed but when I try to demonstrate, that day only to connect my PC remotly I changed internet explorer settings very badly. It causes all the damage. Even I changed them to normal also I am not getting any.
Please help me to resolve it.
waiting for your response....
Thanks,
Sri...Size(kb): 0
Name: TEMPLATE_STORE
Records: 12
Size(kb): 14
Remaining Space(kb): 5831
file://localhost/c:/Nokia/
Midlet exit status: true
file://localhost/root1/
Midlet exit status: true
java.io.IOException: java.io.IOExceptionFilesystem root root1/ is not mounted.
file:///c:/
Midlet exit status: true
file:///e:/
Midlet exit status: true
file:///c:/Nokia/Images/
Midlet exit status: true
file:///c:/Nokia/Videos/
Midlet exit status: true
file:///CFCard/
Midlet exit status: true
java.io.IOException: java.io.IOExceptionFilesystem root cfcard/ is not mounted.
file://localhost/
Midlet exit status: true
java.lang.IllegalArgumentException: Malformed file location.
file://localhost/c:/
Midlet exit status: true
file://localhost/e:/
Midlet exit status: true
Default File System Root is: file://localhost/c:/nokia/vaayoo/
Listing files in directory and its sub directories: file://localhost/c:/nokia/vaayoo/
java.io.IOException: Error initializing HTTP tunnel connection:
HTTP/1.1 400 Bad Request
Date: Mon, 23 Apr 2007 08:13:04 GMT
Server: Apache/2.2.4 (Win32)
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
Error initializing HTTP tunnel connection:
HTTP/1.1 400 Bad Request
Date: Mon, 23 Apr 2007 08:13:04 GMT
Server: Apache/2.2.4 (Win32)
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1 -
Unable to access Workspace through Apache web server
Hi,
I have configured Hyperion 9.3.1. products in windows.
I am getting the following error message when trying to access Workspace through Apache web server(port 19000). But, able to access through Weblogic Application server(port 45000).
please assist me in resolving this issue.
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Apache/2.0.63 (Win32) mod_jk/1.2.8 Server at nasbydapp04 Port 19000
Thanks,
SivaI re-configured the BIPlus components and even now, i am unable to access workspace through Apache web server.
But now, i am getting a different error
Error:
HTTP 404 - File not found
Internet Explorer
Can anyone help me in resolving this issue.
I have updated httpd.conf and HYSL-Weblogic.conf file in Apache server. -
Apache Plug-In: PathPrepend doesn't work?
Hello All,
I've run into a problem at a customer site with the WLS 5.1 Apache Plug-In
with Apache 1.3.12 on Solaris 6: the PathTrim parameter does not work.
Could somebody look at my httpd.conf file and tell me what I'm doing wrong:
<Location /weblogic>
SetHandler weblogic-handler
</Location>
WebLogicHost ism-app
WebLogicPort 7010
PathTrim weblogic
DebugConfigInfo ON
That's as basic as it gets, but it doesn't work! The url
/weblogic/index.html should get sent to wls as /index.html; instead, it's
sent verbatim.
I've tried the plug-in from service pack versions 3, 4, 6, and 8, and tried
the PathPrepend parameter inside the Location tag as well as outside. I
can't imagine that this does not work for any plug-in in any service pack;
if this is a bug in all these service packs, we really need to take a
serious look at QA.
Vijay Garla
Consultant, BEA Systems
[httpd.conf]Hi,
the "apex.widget.initPageItem" will not help you in your case, it's used to register callbacks for $s, $v, show, hide, ... if you have a more advanced item type. You can have a look at the "Star Rating" plug-in which implements several of these callbacks.
For adding cascading LOV support, please have a look at our own select list implementation in /i/javascript/uncompressed/apex_widget_4_0.js
Search for
apex.widget.selectList = function(pSelector, pOptions) {to get a blue print implementation for all the steps you have to add to your widget to add cascading LOV support.
If you need further help, please let me know.
Regards
Patrick
My Blog: http://www.inside-oracle-apex.com
APEX 4.0 Plug-Ins: http://apex.oracle.com/plugins
Twitter: http://www.twitter.com/patrickwolf -
On : Apache 2.0 , Weblogic 7.0, Win 2000
I installed the Apache plug-in for as described in WL docs, but when I try to
access a URL /weblogic/ ( supposed to be configured automatically ) on apache,
I get '404 : file not found' error.
As per the docs, I did following config in Apache:
1. Copied the 'mod_wl_20.so' file found in WLHOME\server\bin directory to the
APACHE_HOME\modules directory
2. Added to httpd.conf :
LoadModule weblogic_module modules/mod_wl_20.so
3. Apache httpd.conf syntax correct : checked by running ' APACHE_HOME\bin\Apache
-t '
4. Restarted WL & Apache.
Now, the weblogic documentation says,
"Test the Apache plug-in by opening a browser and setting the URL to the Apache
Server + "/weblogic/", which should bring up the default WebLogic Server HTML
page, welcome file, or default servlet, as defined for the default Web Application
on WebLogic Server. For example:
http://myApacheserver.com/weblogic/".
For my server, 'http://localhost/weblogic/' - I get a "404 : file not found" error.
What other configuration is needed ? Do I have to specify '/weblogic/' name anywhere
else in Apache configuration file ?
Any pointers will be appreciated.
Thanks,
SForgot to mention , I've also added following configuration in httpd.conf :
LoadModule weblogic_module modules\mod_wl_20.so
<IfModule mod_weblogic.c>
WebLogicHost localhost
WebLogicPort 7501
</IfModule>
<Location /weblogic>
SetHandler weblogic-handler
PathTrim /weblogic
</Location>
"S" <[email protected]> wrote:
>
On : Apache 2.0 , Weblogic 7.0, Win 2000
I installed the Apache plug-in for as described in WL docs, but when
I try to
access a URL /weblogic/ ( supposed to be configured automatically ) on
apache,
I get '404 : file not found' error.
As per the docs, I did following config in Apache:
1. Copied the 'mod_wl_20.so' file found in WLHOME\server\bin directory
to the
APACHE_HOME\modules directory
2. Added to httpd.conf :
LoadModule weblogic_module modules/mod_wl_20.so
3. Apache httpd.conf syntax correct : checked by running ' APACHE_HOME\bin\Apache
-t '
4. Restarted WL & Apache.
Now, the weblogic documentation says,
"Test the Apache plug-in by opening a browser and setting the URL to
the Apache
Server + "/weblogic/", which should bring up the default WebLogic Server
HTML
page, welcome file, or default servlet, as defined for the default Web
Application
on WebLogic Server. For example:
http://myApacheserver.com/weblogic/".
For my server, 'http://localhost/weblogic/' - I get a "404 : file not
found" error.
What other configuration is needed ? Do I have to specify '/weblogic/'
name anywhere
else in Apache configuration file ?
Any pointers will be appreciated.
Thanks,
S -
Error NO_RESOURCES when using Apache Plug-in for Weblogic
Hi all,
LoadModule weblogic_module modules/mod_wl.so
OS.....: OEL 6.3 64 bits
Weblogic Server: 12.1.0.2 (192.168.0.123)
Apache: Apache/2.2.15 (Unix) (192.168.0.149)
I am trying to configure the Apache Plug-in to forward the requests to the Weblogic Server. I already did all the configuration, but when i try to access a page, i get the following error in Apache's error.log:
[Wed Dec 03 18:25:42 2014] [error] [client 192.168.0.149] <649114176419322> weblogic: *******Exception type [NO_RESOURCES] (apr_socket_connect call failed with error=13, host=192.168.0.123, port=7006 ) raised at line 1682 of URL.cpp
[Wed Dec 03 18:25:42 2014] [error] [client 192.168.0.149] weblogic: Trying GET /benefits/ at backend host '192.168.0.123/7006; got exception 'NO_RESOURCES: [os error=13, line 1682 of URL.cpp]: apr_socket_connect call failed with error=13, host=192.168.0.123, port=7006 '
[Wed Dec 03 18:25:44 2014] [error] [client 192.168.0.149] <649114176419322> weblogic: request [/benefits/] did NOT process successfully..................
My httpd.conf if configured as follows:
Listen 8080
LoadModule weblogic_module modules/mod_wl.so
<IfModule mod_weblogic.c>
WeblogicHost 192.168.0.123
WeblogicPort 7006
</IfModule>
<Location /benefits>
SetHandler weblogic-handler
</Location>
When i try to access the app deployed in Weblogic with the following address: "http://192.168.0.149:8080/benefits/" , i get the error mentioned above and the following error is displayed in my browser:
Failure of Web Server bridge:
No backend server available for connection: timed out after 10 seconds or idempotent set to OFF or method not idempotent.
What am i doing wrong?
Thanks in advance.Hi all,
I had some progress... i disabled the firewall (SELinux) on the Apache server. Before, i had just disabled the firewall from the Weblogic Server. Now, when i access the apache server, it redirects (sometimes, actually) the request to my Weblogic Cluster. Let's say that 50% of the time it works and the other 50% i get the error informed previously.
I am using the apache user and the ulimit of this user is:
[apache@vm-apache conf]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15915
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
From the Apache server (192.168.0.149), when i execute the "culr" command, i get the following message:
[apache@vm-apache conf]$ curl http://192.168.0.123:7006/benefits
<html><head><title>302 Moved Temporarily</title></head>
<body bgcolor="#FFFFFF">
<p>This document you requested has moved temporarily.</p>
<p>It's now at <a href="http://192.168.0.123:7006/benefits/">http://192.168.0.123:7006/benefits/</a>.</p>
</body></html>
The message above represents a OK situation or a problematic one?
Below you can see the last few lines of my Error Log and Access Log:
### error log ###
[Thu Dec 18 20:54:16 2014] [error] [client 192.168.0.123] <340514189468553> weblogic: parseJVMID: could not resolve hostname '-1062731653'. Returning NULL from parseJVMID
[Thu Dec 18 20:54:16 2014] [error] [client 192.168.0.123] <340314189468563> weblogic: parseJVMID: could not resolve hostname '-1062731653'. Returning NULL from parseJVMID
[Thu Dec 18 20:54:17 2014] [error] [client 192.168.0.123] File does not exist: /var/www/html/favicon.ico
[Thu Dec 18 20:54:17 2014] [error] [client 192.168.0.123] File does not exist: /var/www/html/favicon.ico
[Thu Dec 18 20:54:21 2014] [error] [client 192.168.0.123] <340114189468603> weblogic: parseJVMID: could not resolve hostname '-1062731653'. Returning NULL from parseJVMID, referer: http://192.168.0.149:8080/benefits/
[Thu Dec 18 20:54:44 2014] [error] [client 192.168.0.149] <339814189468792> weblogic: parseJVMID: could not resolve hostname '-1062731653'. Returning NULL from parseJVMID
[Thu Dec 18 20:54:44 2014] [error] [client 192.168.0.149] <339814189468792> weblogic: initJVMID: parseClusterServerList failure
[Thu Dec 18 20:54:45 2014] [error] [client 192.168.0.123] <339914189468844> weblogic: parseJVMID: could not resolve hostname '-1062731653'. Returning NULL from parseJVMID, referer: http://192.168.0.149:8080/benefits/servlet
[Thu Dec 18 20:54:45 2014] [error] [client 192.168.0.123] <339914189468844> weblogic: initJVMID: parseClusterServerList failure, referer: http://192.168.0.149:8080/benefits/servlet
[Thu Dec 18 20:54:56 2014] [error] [client 192.168.0.149] <339814189468792> weblogic: request [/benefits/welcome.html] did NOT process successfully..................
[Thu Dec 18 20:54:57 2014] [error] [client 192.168.0.123] <339914189468844> weblogic: request [/benefits/welcome.html] did NOT process successfully.................., referer:http://192.168.0.149:8080/benefits/servlet
### access log ###
192.168.0.123 - - [18/Dec/2014:20:54:15 -0300] "GET /benefits HTTP/1.1" 302 267 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.5) Gecko/20120605 Firefox/10.0.5"
192.168.0.123 - - [18/Dec/2014:20:54:16 -0300] "GET /benefits/ HTTP/1.1" 200 5832 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.5) Gecko/20120605 Firefox/10.0.5"
192.168.0.123 - - [18/Dec/2014:20:54:17 -0300] "GET /favicon.ico HTTP/1.1" 404 290 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.5) Gecko/20120605 Firefox/10.0.5"
192.168.0.123 - - [18/Dec/2014:20:54:17 -0300] "GET /favicon.ico HTTP/1.1" 404 290 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.5) Gecko/20120605 Firefox/10.0.5"
192.168.0.123 - - [18/Dec/2014:20:54:20 -0300] "POST /benefits/servlet HTTP/1.1" 200 492 "http://192.168.0.149:8080/benefits/" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.5) Gecko/20120605 Firefox/10.0.5"
192.168.0.149 - - [18/Dec/2014:20:54:39 -0300] "GET /benefits/welcome.html HTTP/1.1" 503 250 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.5) Gecko/20120605 Firefox/10.0.5"
192.168.0.123 - - [18/Dec/2014:20:54:44 -0300] "GET /benefits/welcome.html HTTP/1.1" 503 250 "http://192.168.0.149:8080/benefits/servlet" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.5) Gecko/20120605 Firefox/10.0.5"
Is there any additional or recommended configuration for this solution to work properly?
Thanks again for the attention and pacience. -
Apache plug-in won't load balance requests evenly on cluster
I can't seem to get the Apache plug-in to actually do round-robin load balancing
of HTTP
requests. It does random-robin, as I like to call it, since the plug-in will usually
hit all the
servers in the cluster but in a random fashion.
I've got three managed servers:
192.168.1.5:8001 (WL6 on Linux) 192.168.1.2:8001 (WL6 on Linux) 192.168.1.7:8001
(WL6 on Linux)
Admin server on 192.168.1.7:7000 (WL6 on W2k)
My Apache server is 1.3.9 (RedHat SSL) on 192.168.1.52.
The log file for each servers has something like this:
####<Apr 19, 2001 1:18:54 AM MDT> <Info> <Cluster> <neptune> <cluster1server1>
<main> <system> <> <000102> <Joined cluster cluster1 at address 225.0.0.5 on port
8001>
####<Apr 19, 2001 1:19:31 AM MDT> <Info> <Cluster> <neptune> <cluster1server1>
<ExecuteThread: '9' for queue: 'default'> <> <> <000127> <Adding
3773576126129840579S:192.168.1.2:[8001,8001,7002,7002,8001,7002,-1]:192.168.1.52
to the cluster> ####<Apr 19, 2001 1:19:31 AM MDT> <Info> <Cluster> <neptune>
<cluster1server1> <ExecuteThread: '11' for queue: 'default'> <> <> <000127> <Adding
-6393447100509727955S:192.168.1.5:[8001,8001,7002,7002,8001,7002,-1]:192.168.1.52
to the cluster>
So I believe I have correctly created a cluster, although I did not bother to
assign
replication groups for HTTP session replication (yet).
The Apache debug output indicates it knows about all three servers and I can see
it
doing the "random-robin" load balancing. Here is the output:
Thu Apr 19 00:20:53 2001 Initializing lastIndex=2 for a list of length=3 Thu Apr
19
00:20:53 2001 Init Srvr# [1] = [192.168.1.2:8001] load=1077584792 isGood=1077590272
numSk ip=134940256 Thu Apr 19 00:20:53 2001 Init Srvr# [2] = [192.168.1.5:8001]
load=1077584792 isGood=1077590272 numSk ip=134940256 Thu Apr 19 00:20:53 2001
Init Srvr# [3] = [192.168.1.7:8001] load=1077584792 isGood=1077590272 numSk
ip=134940256 Thu Apr 19 00:20:53 2001 INFO: SSL is not configured Thu Apr 19
00:20:53 2001 Now trying whatever is on the list; ci->canUseSrvrList = 1 Thu Apr
19
00:20:53 2001 INFO: New NON-SSL URL Thu Apr 19 00:20:53 2001 general list: trying
connect to '192.168.1.7'/8001 Thu Apr 19 00:20:53 2001 Connected to 192.168.1.7:8001
Thu Apr 19 00:20:53 2001 INFO: sysSend 320 Thu Apr 19 00:20:53 2001 INFO:
Reader::fill(): first=0 last=0 toRead=4096 Thu Apr 19 00:21:06 2001 parsed all
headers
OK Thu Apr 19 00:21:06 2001 Initializing lastIndex=1 for a list of length=3 Thu
Apr 19
00:21:06 2001 ###Response### : Srvr# [1] = [192.168.1.5:8001] load=1077584792
isGood=1077 546628 numSkip=1077546628 Thu Apr 19 00:21:06 2001 ###Response###
: Srvr# [2] = [192.168.1.2:8001] load=1077584792 isGood=1077 546628
numSkip=1077546628 Thu Apr 19 00:21:06 2001 ###Response### : Srvr# [3] =
[192.168.1.7:8001] load=1077584792 isGood=1077 546628 numSkip=1077546628 Thu Apr
19 00:21:06 2001 INFO: Reader::fill(): first=0 last=0 toRead=4096
Basically, the lastIndex=XXX appears to be random. It may do round-robin for 4
or 5
connections but then always it resorts to randomly directing new connections.
This is what the configuration looks like using the plug-in's
/weblogic?__WebLogicBridgeConfig URL:
Weblogic Apache Bridge Configuration parameters:
WebLogic Cluster List:
1.Host: '192.168.1.2' Port: 8001 Primary
General Server List:
1.Host: '192.168.1.2' Port: 8001
2.Host: '192.168.1.5' Port: 8001
3.Host: '192.168.1.7' Port: 8001
DefaultFileName: ''
PathTrim: '/weblogic'
PathPrepend: '' ConnectTimeoutSecs:
'10' ConnectRetrySecs: '2'
HungServerRecoverSecs: '300'
MaxPostSize: '0'
StatPath: false
CookieName: JSESSIONID
Idempotent:
ON FileCaching:
ON ErrorPage: ''
DisableCookie2Server: OFF
Can someone please help to shed some light on this? I would be really grateful,
thanks!
JeffRight - it means that the only configuration which can do perfect round-robin is a
single plugin (non-Apache, or single-process Apache) - all others essentially do random
(sort of, but it can skew test results during first N requests).
Robert Patrick <[email protected]> wrote:
Dimitri,
The way Apache works is that is spawns a bunch of child processes and the parent process
that listens on the port delegates the processing of each request to one of the child
processes. This means that the load-balancing dome by the plugin before the session ID is
assigned does not do perfect round-robining because there are multiple copies of the plugin
loaded in the multiple child processes. This situation is similar to the one you would get
by running multiple proxy servers on different machines with the NES/iPlanet and IIS
plugins.
As I pointed out in my response to Jeff, attempting to address this problem with IPC
machanisms would only solve the single machine problem and most people deploy multiple
proxy servers to avoid a single point of failure...
Hope this helps,
Robert
Dimitri Rakitine wrote:
Hrm. This is strange - I thought that all the information nesessary for a
'sticky' load-balancing (primary/secondary) is contained in the cookie/session info,
so, the particular plug-in implementation should not make any difference. For
load-balancing - statistically, given large enough sampling base, Apache plug-in
should perform just a well as NS one (unless apache is somehow misconfigured and
calls fork() for each new request).
Jeff Calog <[email protected]> wrote:
Robert,
Thanks for the sanity reply, you are definitely right. I used Netscape 3.0 on
Win2k and it did perfect round-robin load balancing to my servers.
<raving>
BEA - ARE YOU LISTENING? STOP TELLING PEOPLE YOUR APACHE PLUG-IN IS A VIABLE
LOAD BALANCING SOLUTION! It's worthless for load balancing!
</raving>
In some tests, as many as 90% of my connections/requests would be sent to a single
server. There should be something in the release notes like "By the way, the
Apache plug-in is only advertised as doing round-robin load balancing, in reality
it doesn't work worth a darn".
I'm surprised they don't used shared memory or some other technique (pipes, sockets,
signals, writing to /tmp, anything) for interprocess communication to fix that.
Jeff
Robert Patrick <[email protected]> wrote:
Yes, the problem lies in the fact that Apache uses multiple processes
instead of
multiple threads to process requests. Therefore, you end up with multiple
processes all
with the WebLogic plugin loaded into them (and they cannot see one another)...
Hopefully, Apache 2.0 when it comes out will allow the plugin to do a
better job...
Jeff Calog wrote:
I can't seem to get the Apache plug-in to actually do round-robin loadbalancing
of HTTP
requests. It does random-robin, as I like to call it, since the plug-inwill usually
hit all the
servers in the cluster but in a random fashion.
I've got three managed servers:
192.168.1.5:8001 (WL6 on Linux) 192.168.1.2:8001 (WL6 on Linux) 192.168.1.7:8001
(WL6 on Linux)
Admin server on 192.168.1.7:7000 (WL6 on W2k)
My Apache server is 1.3.9 (RedHat SSL) on 192.168.1.52.
The log file for each servers has something like this:
####<Apr 19, 2001 1:18:54 AM MDT> <Info> <Cluster> <neptune> <cluster1server1>
<main> <system> <> <000102> <Joined cluster cluster1 at address 225.0.0.5on port
8001>
####<Apr 19, 2001 1:19:31 AM MDT> <Info> <Cluster> <neptune> <cluster1server1>
<ExecuteThread: '9' for queue: 'default'> <> <> <000127> <Adding
3773576126129840579S:192.168.1.2:[8001,8001,7002,7002,8001,7002,-1]:192.168.1.52
to the cluster> ####<Apr 19, 2001 1:19:31 AM MDT> <Info> <Cluster><neptune>
<cluster1server1> <ExecuteThread: '11' for queue: 'default'> <> <><000127> <Adding
-6393447100509727955S:192.168.1.5:[8001,8001,7002,7002,8001,7002,-1]:192.168.1.52
to the cluster>
So I believe I have correctly created a cluster, although I did notbother to
assign
replication groups for HTTP session replication (yet).
The Apache debug output indicates it knows about all three serversand I can see
it
doing the "random-robin" load balancing. Here is the output:
Thu Apr 19 00:20:53 2001 Initializing lastIndex=2 for a list of length=3Thu Apr
19
00:20:53 2001 Init Srvr# [1] = [192.168.1.2:8001] load=1077584792 isGood=1077590272
numSk ip=134940256 Thu Apr 19 00:20:53 2001 Init Srvr# [2] = [192.168.1.5:8001]
load=1077584792 isGood=1077590272 numSk ip=134940256 Thu Apr 19 00:20:532001
Init Srvr# [3] = [192.168.1.7:8001] load=1077584792 isGood=1077590272numSk
ip=134940256 Thu Apr 19 00:20:53 2001 INFO: SSL is not configured ThuApr 19
00:20:53 2001 Now trying whatever is on the list; ci->canUseSrvrList= 1 Thu Apr
19
00:20:53 2001 INFO: New NON-SSL URL Thu Apr 19 00:20:53 2001 generallist: trying
connect to '192.168.1.7'/8001 Thu Apr 19 00:20:53 2001 Connected to192.168.1.7:8001
Thu Apr 19 00:20:53 2001 INFO: sysSend 320 Thu Apr 19 00:20:53 2001INFO:
Reader::fill(): first=0 last=0 toRead=4096 Thu Apr 19 00:21:06 2001parsed all
headers
OK Thu Apr 19 00:21:06 2001 Initializing lastIndex=1 for a list oflength=3 Thu
Apr 19
00:21:06 2001 ###Response### : Srvr# [1] = [192.168.1.5:8001] load=1077584792
isGood=1077 546628 numSkip=1077546628 Thu Apr 19 00:21:06 2001 ###Response###
: Srvr# [2] = [192.168.1.2:8001] load=1077584792 isGood=1077 546628
numSkip=1077546628 Thu Apr 19 00:21:06 2001 ###Response### : Srvr#[3] =
[192.168.1.7:8001] load=1077584792 isGood=1077 546628 numSkip=1077546628Thu Apr
19 00:21:06 2001 INFO: Reader::fill(): first=0 last=0 toRead=4096
Basically, the lastIndex=XXX appears to be random. It may do round-robinfor 4
or 5
connections but then always it resorts to randomly directing new connections.
This is what the configuration looks like using the plug-in's
/weblogic?__WebLogicBridgeConfig URL:
Weblogic Apache Bridge Configuration parameters:
WebLogic Cluster List:
1.Host: '192.168.1.2' Port: 8001 Primary
General Server List:
1.Host: '192.168.1.2' Port: 8001
2.Host: '192.168.1.5' Port: 8001
3.Host: '192.168.1.7' Port: 8001
DefaultFileName: ''
PathTrim: '/weblogic'
PathPrepend: '' ConnectTimeoutSecs:
'10' ConnectRetrySecs: '2'
HungServerRecoverSecs: '300'
MaxPostSize: '0'
StatPath: false
CookieName: JSESSIONID
Idempotent:
ON FileCaching:
ON ErrorPage: ''
DisableCookie2Server: OFF
Can someone please help to shed some light on this? I would be reallygrateful,
thanks!
Jeff
Dimitri--
Dimitri -
Help about W2K Apache plug-in for WLS
Hi,everybody.
I want to use the W2K apache http server for redirect the dynamic request to
WLS. But i don't have the corresponding plug-in. Who can help me? or Who can
give me some hint about this?
Thanks in advance.
BR
Steven ZhaoHi Steven,
as far as I know there is no Apache Plugin for Windows Platform. Your
choice is either Unix->Apache or Windows->IIS. I think there is a
Netscape Plugin as well, but I don't know for which platforms.
Daniel
-----Original Message-----
From: Steven Zhao [mailto:[email protected]]
Posted At: Friday, October 20, 2000 6:02 AM
Posted To: management
Conversation: Help about W2K Apache plug-in for WLS
Subject: Help about W2K Apache plug-in for WLS
Hi,everybody.
I want to use the W2K apache http server for redirect the dynamic
request to
WLS. But i don't have the corresponding plug-in. Who can help me? or Who
can
give me some hint about this?
Thanks in advance.
BR
Steven Zhao -
Question about the Apache plug-in and WL server
We have a bunch of Weblogic app-servers, and I want to set up Apache servers to
front-end them. Here is what I'd like to do:
(1) Load balancer forwards requests to one of Apache servers
(2) Apache serves the static content (html,gif,css etc.)
(3) Apache servers forward the request to one of the alive Weblogic servers, with
requests for the same Weblogic session should preferably stay with the same Weblogic
server.
The catch is that we are not using Weblogic clustering - we have our own application-specific
light-weight clustering (virtually no replication of dynamic state). All I want
is that the Apache plug-ins keep forwarding the packets to the same Weblogic server
for a session (unless the server dies), and that thsi property hold even if multiple
client requests (for the same session) are rotated across multiple Apache servers.
The first is really important, the second just nice-to-have (I can setup load-balancer
with sticky sessions if needed).
The Apache plug-in documentation seems to suggest that we must use Weblogic clustering
for us to be able to specify multiple Weblogic servers in the plug-in config file,
but is that really required?
Second, does the session cookie uniquely identify the Weblogic server or does
the Apache plug-in keep the mapping between the cookie and the server? Also, does
this answer depend on whether we use Weblogic clustering or not?
The answer depends on the protocol between the Apache plug-in and the Weblogic
server. Is it documented? Available under NDA?
Your help will be really appreciated!!
thanks
-amitis that the Apache plug-ins keep forwarding the packets to the same Weblogic
server
for a session (unless the server dies), If the session id is found in the cookie, request or postdata (in that order),
the plugin will preserve the sticky session.
and that thsi property hold even
if multiple
client requests (for the same session) are rotated across multiple Apache
servers.The rules apply to all apache instances as the single instance.
BTW, the preferred server from the session has to be in the serverList(you defined
in the httpd.conf). You are not using clusters in the backend hence the server
list will not be updated
dynamically. The plugin will not know the changes in the backend without modifying
the httpd.conf and restarted.
The first is really important, the second just nice-to-have (I can setup
load-balancer
with sticky sessions if needed).
The Apache plug-in documentation seems to suggest that we must use Weblogic
clustering
for us to be able to specify multiple Weblogic servers in the plug-in
config file,
but is that really required?
It's a recommended configuration, but not mandatory.
Second, does the session cookie uniquely identify the Weblogic server
or does
the Apache plug-in keep the mapping between the cookie and the server?The server info is in the cookie for the same client although
the plugin also maintains a list of servers.
Also, does
this answer depend on whether we use Weblogic clustering or not?
No.
The answer depends on the protocol between the Apache plug-in and the
Weblogic
server. Is it documented? Available under NDA?
Your help will be really appreciated!!
We only support http and https(60sp1 or later).
Maybe you are looking for
-
How to convert a word document to a fillable pdf form
hello - how to I convert a word document into a fillable pdf form?
-
Audio playback through iPhone 4S speaker & attached headphones
Hi! I might have a problem and I definitely need help, please! When I first got my iPhone 4S, I remember seeing an option... I was able to switch between the earphones and the speaker while listening to music (while headphones still attached, of cour
-
Emailing Briefing book as a pdf
Hello: SPM Business users are looking to email briefing book as pdf but there is no such check-box available. Are there any SAP NOtes or future plans to provide this functionality? Thanks Harin
-
Hi, This is Employee Survey Application. Environment:Java,Servlets,HTML,Windows2000,Oracle. Our problem is ,we could able generate Reports from database to EXCEL sheet format. We have prepared database to HTML reports. Our client requirement is to ge
-
Media center pc m8020n keeps freezing with windows 7 home premium
I recently updated my OS from vista business to windows 7 home premium and since then I have problems with constant freezing. I have tried to reinstall new OS over start over fresh with my hard drives reformatted and still the same issues. The comput