The proper solution is to use a reverse-proxy through-put, not a redirect.
The rest is just matching the "param3" part of the query string and back-referencing it as noted above. If the client may or may not send all parameter-names, then you'll need:
RewriteCond %{QUERY_STRING} ^([^&]*&)*param3=([^&]*)
RewriteRule ^/search$ http://jboss-server:8080/search?param=%2 [P]
otherwise, this might be a bit faster:
RewriteCond %{QUERY_STRING} ^param1=[^&]*¶m2=[^&]*¶m3=([^&]*)
RewriteRule ^/search$ http://jboss-server:8080/search?param=%1 [P]
The latter code snippet still allows the values of param1, param2, and param3 to be blank. If that's not what you want, change the "*" quantifiers to "+" or use specific numeric quantifiers or numeric-range quantifiers.
With this reverse-proxy set-up, your front-end server should be configured to send the X-Forwarded-For request header to the back-end, and the back-end should be configured to log that header instead of Remote_Addr(ess). In this way, the front-end will send the correct IP address of the requesting client to the back-end for logging (Otherwise all requests to the back-end will be logged as originating at the front-end server).
The main advantages are that the proxy request is local (and therefore likely much faster than a client redirect), and that the back-end server name, port number, and URL-path are not 'exposed' to the client or to search engines.
It's not clear why the param1 and param2 query string parameters are included in the request if they are to be ignored/discarded, so there may be more to this problem than described here... If not, then those parameters should not be required to be sent by the client in the first place.
Jim