Hi
Also ich habe einen Suchbefehl programmiert, der eine MySql Datenbank nach dem eingegeben Wort
durchsucht. Ich will das diese gefunden Dokumente als eine Liste zurückgegeben werden und
man diese dann auswählen kann um sie zu öffnen.
Weis jemand wie ich das verwirklichen könnte, weil ich habe dafür echt keinen Ansatz.
Danke
wow mit dem habe ich jetzt nicht gerechnet. wie lange arbeitest du schon mit java?
lucene, webservices... bist du dir sicher, dass du schon so weit bist?
warum machst du alles final?
Ich will das diese gefunden Dokumente als eine Liste zurückgegeben werden
Hi
Also erstmal danke für deine schnelle Hilfe.
Also diese Suchfunktion stammt nicht von mir. Diese wurde von einen
meiner kollegen entworfen und ich bin jetzt im Moment für den
Webservice zuständig dafür.
Also wo genau wird denn da schon in Array umgewandelt?
Ich muss ihn aber doch noch irgendwo sagen das er die Sache
von der ResultSet von Mysql nehmen soll oder etwa nicht und die
MySql suche muss doch auch noch gestartet werden oder irre ich mich
jetzt. Ich stecke gerade total fest. Der webserive kommuniziert schon
mit einfachen Anwendungen aber nun muss die Suche rein?
Ich hoffe du kannst mir da weiterhelfen.
Hi
Also Hibernate ist open-source-framework für java, indem man a Zuständen von Obejkten in einer relationalen Datenbank speichert und aus entsprechenden Datensätze wiederum Objekte erzeugen kann. So ungefähr grob erklährt. Lucene ist eine Java Open-source Bibliothek zum durchsuchen und erzeugen von Texten.
Also ich soll eine Schnittstelle zu einen Programm erstellen das über Webservice (SOAP) bereit gestellt werden soll.
Diese Webservice soll das durchsuchen von Mysql datenbanken nach Schlagwörtern ermöglichen und diese gefunden
Dokumente dann in einer Liste ausgeben, wo es möglich sein soll diese einzelnen dokumente dann zu öffnen.
Die Suchfunktion steht ja schon und auch der Client und der webservice ist soweit fertig und müsste bloss noch angepasst werden. Jedoch ist mir jetzt nicht ganz klar wie ich die Mysql datenbank durchsuchen soll und die dan als lise ausgeben soll. Ich habe bei Jboss schon eien MySql datei eingefügt die diese Sache ermöglichen soll.
MySql Datei
Code:
<?xml version="1.0" encoding="UTF-8" ?>
- <!-- $Id: mysql-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $
-->
- <!--
Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->
- <datasources>
- <local-tx-datasource>
<jndi-name>jdbc/lsedemo</jndi-name>
<connection-url>jdbc:mysql://test-ts.systems.local:3306/lsedemo</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>test</user-name>
<password>test</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
- <!--
should only be used on drivers after 3.22.1 with "ping" support
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
-->
- <!--
sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->
- <!--
sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
-->
- <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional)
-->
- <metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
ich habe leider noch nie mit lucene gearbeitet...
Was sind das für Document Objekte? In einer mysql werden keine dokuemente gespeichert, (höchstens irgendwelche files in form von blobs)...
Hi
Also die Sache ist jetzt so weiter alles gelöst und ich habe das alles gemacht.
Jetzt habe ich an meiner Searchmethode gearbeitet und komme jetzt nicht weiter. Wenn ich jetzt das alles mit Jboss deploye dann zeigt er mit ein Fehler an. Ich schätze mal er kommt mit dem umwandeln der Dokumente in eine Arraylist in einer XML Sprache nicht klar oder so...
Fehler
Code:
ERROR [MainDeployer] Could not start deployment: file:/C:/Users/dnuss/Programme/jboss-4.2.3.GA/server/default/tmp/deploy/tmp1844kmm.ear-contents/kmm-ws.war
java.lang.IllegalStateException: Cannot build JAXB context
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder.createJAXBContext(JAXWSMetaDataBuilder.java:955)
at org.jboss.ws.metadata.builder.jaxws.JAXWSWebServiceMetaDataBuilder.buildWebServiceMetaData(JAXWSWebServiceMetaDataBuilder.java:156)
at org.jboss.ws.metadata.builder.jaxws.JAXWSServerMetaDataBuilder.setupProviderOrWebService(JAXWSServerMetaDataBuilder.java:52)
at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilderJSE.buildMetaData(JAXWSMetaDataBuilderJSE.java:63)
at org.jboss.wsf.stack.jbws.UnifiedMetaDataDeploymentAspect.create(UnifiedMetaDataDeploymentAspect.java:66)
at org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl.deploy(DeploymentAspectManagerImpl.java:118)
at org.jboss.wsf.container.jboss42.ArchiveDeployerHook.deploy(ArchiveDeployerHook.java:97)
at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:90)
at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)
at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
......
......
......
Webservice
Code:
package web.service;
import java.util.List;
import javax.ejb.EJB;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.naming.InitialContext;
import ejb.search.*;
import persistence.hibernate.entities.Document;
@WebService(name = "SearchService", serviceName = "SearchService", targetNamespace = "http://www.test.de")
@SOAPBinding(style = SOAPBinding.Style.RPC) ////Kommunikation über SOAP prozedurorientiert
public class WebServiceSearch {
@EJB
SearchLocal searchBean;
SearchLocal getSearchBean() {
if (searchBean == null) {
try {
searchBean = (SearchLocal) new InitialContext()
.lookup("java:comp/env/ejb/SearchEJB");
} catch (Exception a) {
throw new RuntimeException(a);
}
}
return searchBean;
}
//@WebMethod
//public java.util.ArrayList<String> getItems(java.lang.String searchTerm) {
// new java.util.ArrayList<String>();
@WebMethod
public void createIndex ()
{ try {
getSearchBean().createIndex();
} catch (Exception e) {
e.printStackTrace();
}
}
@WebMethod
public Document[] searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId)
{
List<Document> documents=
getSearchBean().searchInDocumentFieldsForSimpleSearch(and_search, userId);
return documents.toArray(new Document[documents.size()]);
}
}
Das hier ist die Dokument Klasse aber nur der Anfang weil die sehr lang ist...
Code:
@Entity
@Indexed(index = Item.INDEXNAME)
@Table(name = "DOCUMENT")
@PrimaryKeyJoinColumn(name = "itemid")
@OnDelete(action = OnDeleteAction.CASCADE)
public class Document extends Item {
private static final long serialVersionUID = 4383112294280993163L;
@Embeddable
static public class NumberingFormat implements Serializable {
private static final long serialVersionUID = -6523464405795614043L;
private String format;
private Integer sequenceId;
@Column(name = "format", length = 100, nullable = true)
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
@Column(name = "sequenceId", nullable = true)
public Integer getSequenceId() {
return sequenceId;
}
public void setSequenceId(Integer sequenceId) {
this.sequenceId = sequenceId;
}
}
private String name;