weblogic 10.x 上开发restful服务

时间:2023-03-08 18:23:49
weblogic 10.x 上开发restful服务

之前已经学习过 利用JAX-RS快速开发RESTful 服务,当时是jboss环境,如果原封不动的迁移到weblogic 10.x 版本,会杯具的发现应用启动失败,需要做些小调整:

项目结构如下:

weblogic 10.x 上开发restful服务

需要在原来的Rest Service(本文中是MyService.java)外,再包装一层,创建一个Application的子类,本例中是 MyApplication.java,代码如下:

 package yjmyzz.service;

 import java.util.HashSet;
import java.util.Set; import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application; import yjmyzz.service.rest.MyService; @ApplicationPath("/rest")
public class MyApplication extends Application { public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(MyService.class); return s;
}
}

MyApplication

MyService.java的内容如下:(这与在jboss环境中的代码完全相同)

 package yjmyzz.service.rest;

 import javax.ws.rs.GET;

 import javax.ws.rs.Path;

 import javax.ws.rs.Produces;

 import javax.ws.rs.core.MediaType;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName; @Path("/")
public class MyService { final String XMLNS_NAMESPACE = "http://yjmyzz.cnblogs.com/rest/service";
final String ROOT_NODE = "root"; @GET
@Path("/json/hello")
@Produces(MediaType.APPLICATION_JSON)
public JAXBElement<String> getHelloWorldJSON() {
JAXBElement<String> result = new JAXBElement<String>(new QName("",
ROOT_NODE), String.class, sayHelloWorld());
return result;
} @GET
@Path("/xml/hello")
@Produces(MediaType.APPLICATION_XML)
public JAXBElement<String> getHelloWorldXML() {
JAXBElement<String> result = new JAXBElement<String>(new QName(
XMLNS_NAMESPACE, ROOT_NODE), String.class, sayHelloWorld());
return result;
} private String sayHelloWorld() {
return "Hello JAX-RS-1";
} }

MyService

还有一个关键步骤:在webapp/WEB-INF目录下创建web.xml,内容参考如下:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "
version="2.5"> <servlet>
<servlet-name>MyService</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>yjmyzz.service.MyApplication </param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>MyService</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping> </web-app>

web.xml

最后附上pom.xml的内容:

 <?xml version="1.0"?>

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>org.jboss.as.quickstarts</groupId>
<artifactId>helloworld-rs</artifactId>
<version>7.1.2-SNAPSHOT</version>
<packaging>war</packaging>
<name>JBoss EAP Quickstart: helloworld-rs</name>
<description>JBoss EAP Quickstart: Helloworld using JAX-RS</description> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<version.jboss.maven.plugin>7.4.Final</version.jboss.maven.plugin>
<version.jboss.spec.javaee.6.0>3.0.2.Final</version.jboss.spec.javaee.6.0>
<version.war.plugin>2.1.1</version.war.plugin>
<maven.compiler.target>1.6</maven.compiler.target>
<maven.compiler.source>1.6</maven.compiler.source>
</properties> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>${version.jboss.spec.javaee.6.0}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.15</version>
</dependency>
</dependencies> <build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>${version.war.plugin}</version>
<configuration>
<failOnMissingWebXml>true</failOnMissingWebXml>
</configuration>
</plugin> <plugin>
<groupId>org.jboss.as.plugins</groupId>
<artifactId>jboss-as-maven-plugin</artifactId>
<version>${version.jboss.maven.plugin}</version>
</plugin>
</plugins>
</build> </project>

pom.xml

ok,打完收工!

附示例源码下载:weblogic-rest-helloworld.zip