Skip to main content
Version: 4.6.x.x LTS

Integration of a content provider using HTTP

HTTP content providers are integrated using the HttpConnectorServlet. To configure the content provider, perform the following steps:

  • Get all the required network connection addresses and the applications' root locations, e.g.:
    • <http://svappl.company.com:8080/>
    • <http://fallback.company.com:80/>

Top locations /appl1 and /appl2

  • Define the HTTP connector by adding a HttpConnectorServlet entry to the reverse proxy.
  • Define the required reverse proxy namespace by adding the required servlet mappings for a discussion about namespaces and mappings).
  • Restart the server
  • Test the setup by accessing the mapped URLs

The configuration steps lead to the following entries in the web.xml file (using opnevisproxy**config webapp):

<servlet>
<servlet-name>ApplConnector</servlet-name>
<servlet-
class>ch::nevis::isiweb4::servlet::connector::http::HttpConnectorServlet</servlet-class>

<init-param>
<param-name>InetAddress</param-name>
<param-value>svappl.company.com:8080 fallback.company.com:80</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>ApplConnector</servlet-name>
<url-pattern>/appl1/{*}</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ApplConnector</servlet-name>
<url-pattern>/appl2/{*}</url-pattern>
</servlet-mapping>

You should be able to access the application on the reverse proxy without any authentication now. The next steps include:

  • Enable protection by defining security filters and filter mappings.

For details about tuning the HttpConnectorServlet, see sectionHttpConnectorServlet.

Troubleshooting

If you encounter problems with integration, perform the following steps:

  • Enable front-end tracing (BC.Tracer.DebugProfile.NavajoOp=4)
  • Enable connector tracing (BC.Tracer.DebugProfile.IsiwebOp=4)
  • Restart the server. HTTP protocol is now traced to the navajo.log file
SymptomsResolution
HTTP Response Status 100 Continue from content provider (see <==== entries)MS IIS has timing problems with fragmented HTTP/1.1 requests. Set init-param 'HttpProtocol' to the value 'HTTP/1.0' on the HttpConnectorServlet.
POST with Content-Length: 0 in incoming requests (see >>>>> entries) or problem with file uploads in MSIESome MSIE Browsers have troubles with HTTP keepalive. A workaround for this problem is to disable KeepAlive, but this also affects performance.

Disable KeepAlive in navajo.xml:* for all clients:

<Server KeepAlive="off">
  • for MSIE only:
<UserAgent
pattern="^Mozilla.MSIE.$"
keepAlive="false"/>

See the chapter MSIE: known problems for further details.

Performance problems with the MySQL database If the reaper cannot clean up the database anymore (due to performance issues under heavy load), you can remove some expired entries with the following SQL commands.

  • For the remote store via navajo:
DELETE FROM tnssa_http_cache WHERE (last_access_time + 7200) < UNIX_TIMESTAMP(NOW())
LIMIT number_of_sessions_to_delete;
  • For the MySQLSessionStoreServlet based store:
DELETE FROM session WHERE (last_access_time + 7200 < UNIX_TIMESTAMP(NOW())) LIMIT number_of_sessions_to_delete;

If you use the NDB Cluster, call the following command first. Otherwise the NDB Cluster may leak due to a bug in the NDB Cluster (see(https://bugs.mysql.com/bug.php?id=89511)*):

DELETE FROM attribute where id in (select SESSION_ID from session WHERE (last_access_time + 7200) < UNIX_TIMESTAMP(NOW()))

The above SQL command will remove <number_of_sessions_to_delete> sessions that are older than 2 hours. Keep in mind that no session reaper will be called for those sessions.