Upload e inserção de imagem em banco no struts

Olá eu estou fazendo um trabalho de estou tentando realizar um upload com o html:File, e estou em seguida tentando passar esta imagem para o meu objeto bean que possui um atrivuto do tipo file, o qual em seguida sera gravado em banco.
Mas preciso saber se isso é possivel, pelo menos a parte de eu passar os bytes ou como um objeto file mesmo a imagem carregada para um atributo do mesmo tipo em uma classe java.

Aqui vai o codigo do que eu fiz ate agora …o problema é passar o vetor de bytes para a classe bean, não to conseguindo, algume tem alguma ideia de como fazer isso?

#struts-config.xml
<action-mappings>
<action input="/“
name=“IndexarForm"
path=”/cadImg"
scope=“session"
attribute=“imagem"
type=“RN.IndexarAction”>
<forward name=“sucesso” path=”/sucesso.jsp”/>
<forward name=“erro” path=”/erro.jsp"/>
</action>

&lt;/action-mappings&gt;

#indexar.jsp
<html:form action=“cadImg” method=“post”>
<table class=‘menu’ width=“100%” border=“0” cellspacing=“1” cellpadding=“1”>
<tr>
<td class=‘menu’><bean:message key=“indexar.upload” /><html:file property=“imagem.imagem”></html:file></td>
</tr>
<tr>
<td><html:submit value=“cadastrar”><bean:message key=“botao.envio” /></html:submit></td>
<td><html:reset ><bean:message key=“botao.reset”/></html:reset></td>
</tr>
</table>
</html:form>

#imagemBean.java
public class ImagemBean {

private byte[] imagem;

public ImagemBean() {
}    

public byte[] getImagem() {
    return imagem;
}

public void setImagem(byte[] imagem) {
    this.imagem = imagem;
}

}

#indexarForm.java
public class IndexarForm extends org.apache.struts.action.ActionForm {

private ImagemBean imagem = new ImagemBean();

public ImagemBean getImagem() {
    return imagem;
}

public void setImagem(ImagemBean imagem) {
    this.imagem = imagem;
}    

public IndexarForm() {
    super();
    // TODO Auto-generated constructor stub
}

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    ActionErrors errors = new ActionErrors();
    if (getImagem() == null) {
        errors.add("name", new ActionMessage("error.name.required"));
        // TODO: add 'error.name.required' key to your resources
    }
    return errors;
}

}

#indexarAction.java
public class IndexarAction extends Action {

private final static String SUCCESS = "success";

public ActionForward execute(ActionMapping mapping, ActionForm  form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    try{
        IndexarForm imgForm = (IndexarForm) form;
        FormFile img = (FormFile) imgForm;
        ImagemPers imgPers = new ImagemPers();
        ImagemBean imgVO = new ImagemBean();
        String conteudo = img.getContentType();
        String nomeArquivo = img.getFileName();
        int tamanho = img.getFileSize();
        byte[] dados = img.getFileData();

/* Tentei utilizar um exemplo que consegue pegar mas ele não explica como q ele passou esse vetor de bytes o problema é aqui mesmo, por que ele ta redirecionando pra pagina de erro.*/

        if(imgPers.cadastrarImagem(imgForm.getImagem())){
            return (mapping.findForward("sucesso"));
        }else
            return (mapping.findForward("erro"));
    } catch(Exception e){
        return (mapping.findForward("erro"));
    }
}

}

*imagemPers.Java
public class ImagemPers {

private BDBean banco;

public ImagemPers() {
    banco = new BDBean();
}

public boolean cadastrarImagem(ImagemBean imagemVO) throws Exception{
    if(banco.conectar()){
        String sql=
                "insert into Imagem(imagem) values(" + imagemVO.getImagem() + ")";
        if (banco.dados(sql)){
            return true;
        } else{
            return false;
        }
    }else{
        return false;
    }
}

}

#BDBean.java
public class BDBean {

private String drive = "org.firebirdsql.jdbc.FBDriver";
private String url = "jdbc:firebirdsql:localhost/3050:D:/projetos/web/Ferramenta";
private String usuario = "SYSDBA";
private String senha = "masterkey";
private Connection conexao;
private String erro = "";


public Connection getConexao() {
    return conexao;
}

public void setConexao(Connection conexao) {
    this.conexao = conexao;
}

public boolean conectar(){
    boolean conexao = false;
    try{
        Class.forName(this.drive);
        this.conexao = DriverManager.getConnection(url, usuario, senha);
        conexao = true;
    }catch(Exception e){
        setErro(e.getMessage());
    }
    return conexao;
}
/** Creates a new instance of BDBean */
public BDBean() {
    
}

public boolean dados(String sql){
    Statement sessao;
    try {
        sessao = this.getConexao().createStatement();
        sessao.execute(sql);
        this.setErro("");
        return true;
    }
    catch(SQLException sqlE){
        this.setErro("Erro! \nSQL:"+sql);
        return false;
    }
    catch(Exception e){
        this.setErro(e.getMessage());
        return false;
    }
}

public String getErro() {
    return erro;
}

public void setErro(String erro) {
    this.erro = erro;
}

}

Por favor se ra que alguém pode me dar uma luz de como resolver isso??